Mirko Geschrieben 18. Januar 2002 Geschrieben 18. Januar 2002 Original geschrieben von BMAS @Mirko Ja, bitte mach´ das! Ich meinte das aber andersrum... Schick du den Code und wir suchen den Fehler... oder mach das per Socket... ist schon komfortabler...und eigentlich fast einfach als dein File IO gedönse.. Zitieren
Peeter Geschrieben 18. Januar 2002 Geschrieben 18. Januar 2002 Vor allem ist es nicht nur komfortabler, sondern auch zweckmäßiger. Was willst du mit ner Textdatei auf nem Linux-System oder nem MAC?? WO BLEIBT DA DEN DIE PLATTFORMUNABHÄNGIGKEIT??? Außerdem müsstest du das File ständig pflegen!! cu Peeter Zitieren
BMAS Geschrieben 18. Januar 2002 Autor Geschrieben 18. Januar 2002 import java.io.*; import java.lang.Runtime; import java.net.*; class antivirus2 { public static void main(String args[]) { try { File altedef = new File("W:\\antivirus\\","altedef_1.txt"); FileWriter fw1 = new FileWriter(fehler); LineNumberReader ein = new LineNumberReader(new FileReader(altedef)); String rechner = ein.readLine(); while (rechner !=null) { Socket sock=new Socket(rechner,80); sock.setTcpNoDelay(true); sock.setSoLinger(false,5); sock.setSoTimeout(10); System.out.println(rechner+" ist erreichbar"); sock.close(); rechner=ein.readLine(); } } catch (IOException p) { System.out.println("Fehler: "+p); } } } Ich bekomme mit dem Code eine SocketException, was heisst das? :eek: Zitieren
Peeter Geschrieben 18. Januar 2002 Geschrieben 18. Januar 2002 Ein Socket besteht immer aus einer eindeutigen IP-Adresse und einem Port! Den Port hast du ja fest vorgegeben. (Wobei ich nicht den Port 80 nehmen würde, oder hast du auf jedem Rechner im Netzwerk einen WebServer laufen??) Ich würde wirklich Port 135 bzw. 137 nehmen!! Da kannst du nix falsch machen. while (rechner !=null) { Socket sock=new Socket(rechner,80); sock.setTcpNoDelay(true); sock.setSoLinger(false,5); sock.setSoTimeout(10); System.out.println(rechner+" ist erreichbar"); sock.close(); rechner=ein.readLine(); } Jetzt hast du aber einen Fehler gemacht. Deine Variable "rechner" muß eine IP sein! (xxx.xxx.xxx.xxx) Wenn du das änderst, hast du schon die halbe Miete. Die letzten 3 xxx müssen nur um 1 erhöht werden.(Außer ihr habt noch nen Router im Netzwerk, dann wird´s schwieriger.) cu Peeter MAHLZEIT!! (Ich geh jetzt was essen) Zitieren
BMAS Geschrieben 18. Januar 2002 Autor Geschrieben 18. Januar 2002 Kann ich das nicht irgendwie mit dem Rechnernamen machen? Ich habe hier eine Liste mit allen Rechnern (so ca. 800). Aber wenn ich die IP haben will, muss ich nochmal 2 Std. exportieren, bzw. weiss ich gar nicht ob die herausfinde... Zitieren
BMAS Geschrieben 18. Januar 2002 Autor Geschrieben 18. Januar 2002 Ausserdem haben wir DHCP... Zitieren
Mirko Geschrieben 18. Januar 2002 Geschrieben 18. Januar 2002 Das könntest du ja auch automatisieren. Ganz ohne Datei.. Du baust dir einfach eine Schleife, dir dir die Ips hochzählt. Kommt natürlich ein wenig auf die von euch benutzten Ip-Adressen an... So kannst du dann natürlich nur sagen, welche Rechner an sind und nicht welche aus... aber das kommt drauf an, wofür du es brauchst... Zitieren
Peeter Geschrieben 18. Januar 2002 Geschrieben 18. Januar 2002 Klar kannst du auch die Rechnernamen nehmen!! InetAddress addr=InetAddress.getByName(host); System.out.println(addr.getHostName()+"("+addr.getHostAddress()+")"); (hier wird beides auf die Konsole ausgegeben NAME+IP) Aber das erkläre ich dir nach´m Mittag!! Oder dann per Mail, denn das dauert länger!! cu Peeter Zitieren
BMAS Geschrieben 18. Januar 2002 Autor Geschrieben 18. Januar 2002 @Mirko Ich brauche das Programm, um eine Viendefinitions im Netz zu verteilen. Damit ich weiss, welche Rechner die noch nicht haben, wollte ich die in ein Textfile schreiben. @Peeter Habe dir ´ne Mail geschickt! Zitieren
Burgi Geschrieben 19. Januar 2002 Geschrieben 19. Januar 2002 Also, ich hab leider nicht den Quellcode hier, aber ich hab schonmal so eine Socketabfrage gemacht und falls es noch die Frage, zu den Returncodes gibt: Es gibt so eine Art "Returncodes". Es sind aber eher Fehlermeldungen, falls ein Rechner nicht erreichbar ist. Und wärend des Abfangen dieses spezifischen Fehlers dann z.B. ausgeben, System.out.println("Rechner gibts nicht, oder ist aus."); Guck einfach nochmal irgendwo im Tutorial nach, welche Fehlermeldungen das genau waren. Sonst kann ich leider nichts dazu sagen. Zitieren
Peeter Geschrieben 21. Januar 2002 Geschrieben 21. Januar 2002 Sag ich doch die ganze Zeit. Sobald sich der Socket nicht verbinden kann, tritt eine Exception auf (IOException). Wenn diese Auftritt, ist kein Rechner mit dieser IP online. Eigentlich ganz einfach!! cu Peeter Zitieren
Dalton Geschrieben 21. März 2002 Geschrieben 21. März 2002 Hi leute Ich hab da mal eine Frage zu Socket! Wird bei Socket nur abgefragt, ob der angegebene Port offen ist oder auch ob dort ein Dienst aktiv ist? Kann man eigentlich nur danach gucken ob der Port offen ist, oder MUSS ein Dienst aktiv sein? MfG Dalton Zitieren
Peeter Geschrieben 22. März 2002 Geschrieben 22. März 2002 Also eigentlich wird versucht, sich gleich mit dem Port zu verbinden. Wenn es funktioniert hast du eine bestehende Verbindung zwischen 2 Rechnern auf einem bestimmten Port. Ein Dienst muß nicht aktiv sein. Nur ein funktionierendes Netzwerk. cu Peeter Zitieren
Dalton Geschrieben 22. März 2002 Geschrieben 22. März 2002 ich ahb aber ein Prog geschrieben welche offene Ports prüft, und ich bekommen aber immer nur eine verbindung mit dem Port 139 obwohl keine Firewall aktiv ist! Oder was ist sonst die Bedingung für einen offenen Port? MfG Dalton Zitieren
Peeter Geschrieben 25. März 2002 Geschrieben 25. März 2002 Schließt du eigentlich die Sockets, mit denen du dich verbindest, wieder? Außerdem sind nicht bei allen Rechnern viele Ports offen. eigentlich sollten so wenig Ports wie möglich offen sein. Nimm am besten mal nen Proxy oder was ähnliches. Die haben eigentlich relativ viele Ports offen. cu Peeter Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.