tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
Like Tree1Danke
ERLEDIGT
JA
ANTWORTEN
17
ZUGRIFFE
798
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Alex Großmann Alex Großmann ist offline Mitglied Gold
    Registriert seit
    Jun 2011
    Beiträge
    119
    Hallo liebe C´ler!


    ich schreibe gerade ein Programm in Java, welches einen Port, sowie IP von-bis Bereiche aufruft. Dann soll er jede von IP auf die bis IP hochzählen. (schon passiert ), anschließend bzw. während dem Hochzählen soll jede IP angepingt werden. Dabei soll geschaut werden ob der Port vorhanden ist. In jedem falle soll ausgegeben werden was für ein Port dran hängt wenn er nicht der geforderte Port ist.
    (auf Port x laufen alle PC´s mit Virenscanner, daher soll´s so geschaut werden wo noch die Virenscanner fehlen.)

    Nun ist mein Problem in Java das man eben dieses so nicht realisieren kann. Dank der Info vom User Spike, habe ich erfahren das dies mit C möglich, sogar relativ einfach ist.
    Ich würde dann über JNI das ganze in Java einbinden.

    Daher möchte ich euch fragen ob ihr mir bitte helfen könntet. Das Programm wäre dannach endlich fertig
    Ich möchte noch erwähnen das ich zwar C++ spreche, aber selbst das nicht perfekt. Mir ist C daher nicht so geläufig...

    Grüße!
     

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Hi

    du willst also pro IP auf (maximal) zwei Ports überprüfen, ob da was auf Verbindungen wartet?
    Warum soll das in Java nicht möglich sein?

    Du machst eine Socketverbindung zum einen Port.
    Wenn da was ist: Ohne Virenscanner.
    Wenn da nichts ist, machst du eine Verbindung zum anderen Port.
    Wenn da was ist: Mit Virenscanner
    Wenn da auch nichts ist: Kein Rechner/Ausgeschaltet/Dein Programm nicht gestartet.

    Da du sowieso auf die Ports überprüfen musst, kannst du dir den Ping vorher auch sparen.
    Wenn nichts online ist, bekommst du den Fehler bei den Sockets auch.

    Gruß
     

  3. #3
    Alex Großmann Alex Großmann ist offline Mitglied Gold
    Registriert seit
    Jun 2011
    Beiträge
    119
    Servus Sheel,

    es sollen x beliebige Ports geprüft werden. bzw. könnte ich das auch auf einen Port beschränken, wobei mehrere einfach praktischer wäre.
    Die Ports werden also eingegeben, dann dem programm übergeben und dieses soll nun schauen ob die Ports da sind, wenn nicht solls schauen ob es evt. 2 windowsports sind, wenn nicht dann solls schauen welcher port den dran steht. IP´s die nicht angepingt werden können sowie IP´s die den eingegebenen Port haben fallen aus der Ausgabe raus.

    Zum Thema wieso es nicht in Java möglich ist:
    Man braucht für einen Ping einen ICMP Socket (Socket_RAW), diesen gibts in Java so nicht (nur UCP und TCP) ... TCP Socket eignen sich einfach nicht als Ping, da diese so gut wie von jeden gut eingestellten Rechner geblockt werden...

    Edit:
    Ich werde deffinitiv deinen Lösungsansatz mal ausprobieren!
    Edit2:
    Und wie binde ich dann die IP Bereiche ein? Ich mein das muss ja festgelegt werden oder?
    Geändert von Alex Großmann (08.07.11 um 09:31 Uhr)
     

  4. #4
    SE Tutorials.de Gastzugang
    @sheel
    Es geht hier sehr wohl um einen Ping da TO nicht sicher gehen kann ob an Port X auch was läuft ... er aber trotzdem wissen möchte ob es ein laufendes System gibt was auf diese IP hört ... und genau DAS ist mit Java eben NICHT möglich.
     

  5. #5
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Hmmm...irgendwie erschließt sich mir der ganze Sinn des Programms noch immer nicht.
    Egal, ich such mal einen Pingcode auf meiner Festplatte.
    Kommt noch...

    edit:
    So, gefunden.

    Aber etwas wirst du glaub ich noch warten müssen,
    ich werde den Code nämlich (endlich, nach Jahren)
    etwas schöner formatieren.
    Geändert von sheel (08.07.11 um 13:40 Uhr)
     

  6. #6
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Hallo,

    Hast du dir das schon mal angeschaut?
    http://www.0x13.de/index.php/code-sn...g-in-java.html

    Gruß

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  7. #7
    Alex Großmann Alex Großmann ist offline Mitglied Gold
    Registriert seit
    Jun 2011
    Beiträge
    119
    Danke für den Link, die Jcap lib war mir auch schon ein Dorn im Auge...probieren kann man es ja mal..
     

  8. #8
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Schön, dann spar ich mir die Formatiererei...zum Glück
     

  9. #9
    Alex Großmann Alex Großmann ist offline Mitglied Gold
    Registriert seit
    Jun 2011
    Beiträge
    119
    Zitat Zitat von sheel Beitrag anzeigen
    Schön, dann spar ich mir die Formatiererei...zum Glück
    Schade, wäre auch an deinem Code interessiert, weil das Jpcap ziemlich kompliziert ist :P (z.G. haben die auf ihrer HP nen eignen Tut bereich ...)
     

  10. #10
    Avatar von Navy
    Navy Navy ist offline Freiwillige Serverwehr
    tutorials.de Administrator
    Registriert seit
    Jul 2003
    Ort
    Montreal (Quebec)
    Beiträge
    1.666
    Zitat Zitat von SPiKEe Beitrag anzeigen
    @sheel
    Es geht hier sehr wohl um einen Ping da TO nicht sicher gehen kann ob an Port X auch was läuft ... er aber trotzdem wissen möchte ob es ein laufendes System gibt was auf diese IP hört ... und genau DAS ist mit Java eben NICHT möglich.
    Das ist so nicht richtig. Ein Ping dient der Überprüfung, ob ein Host erreichbar ist. Genau das kann man aber implizit auch über einen TCP-Connect herausfinden. Die Antwort auf eben diesen Connect sagt Dir nämlich, ob der Host unbekannt ist (offline), nicht antwortet (drop), die Verbindung verweigert (reject) oder akzeptiert. Ein Ping ist da nicht nötig. Ich bin mir sicher, dass auch Java das leisten kann, ggf über die Exceptions eines Connect-Versuches.
     
    Navy

    --
    Echtzeithilfe unter irc.tutorials.de #tutorials.de

  11. #11
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    @Alex Großmann: Da ich das Ping-Zeug sicher wieder mal irgendwann hier fürs Forum brauche, werd ichs schon machen...
    aber bitte nicht hetzen. Irgendwann in der Nacht wirds kommen.

    Nur gerade anfängertauglich ist der Code auch nicht.
    Man kann ihn zwar einfach verwenden,
    aber verstehen was da passiert ist eben etwas schwieriger.

    Gruß
     

  12. #12
    Alex Großmann Alex Großmann ist offline Mitglied Gold
    Registriert seit
    Jun 2011
    Beiträge
    119
    Keine hektikt!
    Freu mich nur wenn er kommt
     

  13. #13
    Avatar von Navy
    Navy Navy ist offline Freiwillige Serverwehr
    tutorials.de Administrator
    Registriert seit
    Jul 2003
    Ort
    Montreal (Quebec)
    Beiträge
    1.666
    Nochmal: Du brauchst keinen Ping.

    Du machst einen TCP-Connect auf die Adresse mit dem spezifizierten Port. Wird die "UnknownHostException" geworfen ist der Host nicht erreichbar. Also das, was Du umständlich über einen Ping herauszufinden versuchen würdest. Die Methode ohne Ping hat den Vorteil, dass Du im günstigsten Fall auch gleich mit dem Host verbunden bist. Natürlich solltest Du auch die anderen relevanten Exceptions auswerten. Hierfür lege ich Dir die Dokumentation von Java ans Herz.

    Kleine Nebeninfo: Wenn Du pingst und bekommst keine bzw. eine negative Antwort , heißt das nicht, dass der Host automatisch auch alle anderen Verbindungen verweigert. ICMP werden von so vielen "Admins" als generell zu filtern eingestuft – eine dumme Unsitte die auf gefährlichen Halbwissen beruht. Lass das mit dem Pingen also in diesem Fall.
     
    Navy

    --
    Echtzeithilfe unter irc.tutorials.de #tutorials.de

  14. #14
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.516
    Nicht nur Admins machen das, als Otto-Normal-User kann man mit seiner Windows-Firewall einfach ICMP-Echos abwürgen und so quasi in Stealth gehen.

    Ich pflichte Navy bei, das geht prima mit Java-Board-Mitteln. Außerdem gibts in den Java-Docs sogar ein Beispiel zum Pingen:

    http://download.oracle.com/javase/1....mple/Ping.java
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  15. #15
    Avatar von Navy
    Navy Navy ist offline Freiwillige Serverwehr
    tutorials.de Administrator
    Registriert seit
    Jul 2003
    Ort
    Montreal (Quebec)
    Beiträge
    1.666
    Nochmal langsam: Ping ist hier überflüssig. Nenn mir einer mal einen Vorteil des Ping in diesem Fall!
     
    Navy

    --
    Echtzeithilfe unter irc.tutorials.de #tutorials.de

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 25.01.10, 20:50
  2. huhu =) implementieren von java
    Von Erbsenkommandant im Forum vB-Testforum
    Antworten: 0
    Letzter Beitrag: 21.11.09, 18:28
  3. alle Ports öffnen und auf allen Ports lauschen
    Von KMX-Robin im Forum Visual Basic 6.0
    Antworten: 5
    Letzter Beitrag: 03.04.08, 21:15
  4. Antworten: 0
    Letzter Beitrag: 17.07.07, 01:30
  5. Antworten: 0
    Letzter Beitrag: 13.12.06, 14:50