Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Rechner Scan

Empfohlene Antworten

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..

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


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:

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)

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...

Ausserdem haben wir DHCP...

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...

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

@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!

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.

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!! :D

cu Peeter

  • 2 Monate später...

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

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

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.