ERLEDIGT
JA
JA
ANTWORTEN
9
9
ZUGRIFFE
4206
4206
EMPFEHLEN
-
Hallo Leute,
Ich möchte gerne einen Broadcast ins Netz senden um zuerfahren welche Rechner gerade erreichbar sind.
Ich habe mich auch schon ein bisschen in die Socketprogrammierung ein gearbeitet, aber ich bekomme das irgent wie noch nicht hin.
Ein Ping kann ich schon über Socket versenden O.K. das halbe Listing stand schon in Internet und ich mußte da nur ein paar Anpassungen machen.
Ich möchte gerne mehr über die Socket's wissen.
Habt Ihr da vielleicht eine paar gute Tutorials oder so ne Art Roadmap wie man generell mit den Socket's arbeitet.
BisDann
-
31.12.05 13:49 #2
- Registriert seit
- Jun 2004
- Ort
- Koblenz (Rheinland-Pfalz)
- Beiträge
- 217
Hallo,
Wie willst du ueber UDP erfahren ob Rechner online sind? UDP ist schon von Natur aus connectionless. Auf einen ICMP Broadcast antworten auch laengst nicht alle Rechner, das haengt dann wieder vom OS ab wie es implementiert ist. Ein ICMP Ping ist also die beste Moeglichkeit, das wirst du wohl fuer jeden Rechner machen muessen (am besten in mehreren Threads). Das kann zwar auch geblockt werden, aber wenn es sich um dein LAN handelt wirst du das ja wissen.
Ich weiss ja nicht, mit welcher Framework Version du arbeitest, aber in .NET 2.0 gibt es integrierte Ping Funktionalitaet. Damit kannst du so etwas sehr sehr schnell pruefen, das sind dann nur wenige Zeilen.
Zu den Sockets:
Socket Programming in C# - Part 1 - Introduction
Socket Programming in C# - Part 2 - Introduction
Sockets in C#
TCP/IP Sockets in C sharp
-
Hallo,
ich arbeite mit 1.1 so muß ich mir die Packete selber zusammen basteln. Die Möglichkeit mit dem Ping habe ich schon "ausprobiert", aber war nicht so erfolgreich.
Wie bekomme ich eigentlich die Subnetmask raus? Dann könnte ich mir die Netzwerkadresse ausrechnen und dann die Zahl der möglichen IP-Addressen, das würde das alles schon sehr einschränken.
Aber das dauert alle sehr lange, deshalb habe ich mir überlegt es über den Broadcast zu machen.
BisDann
-
Configuring TCP/IP Settings using WMI and C#
So bekommst du IPAdresse, MAC-Adresse, Subnetmask und weitere Informationen heraus.
-
31.12.05 14:22 #5
- Registriert seit
- Jun 2004
- Ort
- Koblenz (Rheinland-Pfalz)
- Beiträge
- 217
Die Subnetmask muesstest du kennen, wenn es sich um dein LAN handelt. Du kannst kannst die Subnetmask ja aus der aktuellen IP-Knfiguration auslesen, die sollte ja ohnehin fuer die Rechner im gleichen Netz die selbe sein.
Vom Broadcast wuerde ich abraten, damit bekommst du kein vernuenftiges Ergebnis. Das es so langsam ist, liegt wahrscheinlich daran, dass du nicht mit mehreren Threads gearbeitet hast und so nur eine Adresse gleichzeitig anpingen konntest. Das Durchpingen eines /24er Netzes wird mit mehreren Threads nicht mehr als ein paar Sekunden (wenn ueberhaupt) dauern (je nach Threadzahl und Ping Timeout, das kannst du ja aber auch relativ weit runterstellen wenn es sich um ein LAN handelt und man nicht gerade davon ausgeht das etliche Rechner an einem AP oder im gleichen Segment an einem Hub haengen).
-
Hallo,
zu Norbert,
ja der Artikel kommt mir bekannt vor, aber ich finde bei mir nicht die "ManagementClass". Ich wollte die bei Verweise in mein Projekt mit ein fügen, aber da habe ich es auch nicht gefunden.
zu zovax,
ich wollte es aber so machen, das der User nicht seine Subnetmask kennen muß. Also ich soll für jeden ping auf eine IP-Adresse einen eigenen Thread nehmen? Je nach dem wie groß der IP Bereich ist z.B. bei einer Maske von 255.0.0.0 wären das schon 255*255*255-2 Thead's (ich hoffe ich habe richtig gerechnet).
Bis Dann
-
31.12.05 14:59 #7
- Registriert seit
- Jun 2004
- Ort
- Koblenz (Rheinland-Pfalz)
- Beiträge
- 217
Deswegen sage ich ja, du kannst sie auslesen. Du kannst ohnehin nich so viele Threads auf einmal erstellen (Rechnung war nicht ganz richtig :)), das muss nach und nach geschehen. Zb. 64 Threads aufeinmal, wenn diese fertig sind, die naechsten 64 Adressen, und so weiter. Die Threadzahl kann ja variabel/einstellbar sein. Auch die Netzmaske und IP Range koennte einstellbar sein.
Bei so grossen Netzen ist ein Broadcast uebrigens noch viel viel uneffektiver. Du wirst auch kein Netz fnden, wo du komplett eine /8er Netmask hast, das kann gar nicht gut gehen, deshalb solltest du dir um die Anzahl von Adressen mal keine Gedanken machen.
Zur "ManagementClass":
System.Management als Reference einfuegen, dann findest du sie unter System.Management.ManagementClass.Geändert von zovax (31.12.05 um 15:02 Uhr)
-
Hallo,
Was soll ich auslesen meine eigene IP-Adresse oder die Subnetmask?
Ja mit meiner IP und der SubnetMask kann ich mir dann die Netzwerkadresse errechnen um so dann die möglichen IP-Adressen ran zukommen und sie anzupingen.
Wo finde ich das und was meinst du mit "als Reference" einfügen.System.Management als Reference einfuegen, dann findest du sie unter System.Management.ManagementClass.
-
31.12.05 15:07 #9
- Registriert seit
- Jun 2004
- Ort
- Koblenz (Rheinland-Pfalz)
- Beiträge
- 217
Beides :)
Zitat von Reverent
Ich weiss ja nicht was du fuer eine IDE benutzt, bei VS2005/2003:
Zitat von Reverent
Im Solution Explorer wo dein Projekt steht: Rechte Taste auf References (weiss nicht wie es in der deutschen Version heisst) -> Hinzufuegen -> System.Management.dll auswaehlen.
-
Danke,
habe es gefunden!
So dann werde ich mich mal drann setzen!
Bis Dann
Ähnliche Themen
-
Broadcast - Suche
Von MHayer im Forum JavaAntworten: 1Letzter Beitrag: 15.08.09, 01:03 -
Broadcast
Von Nikon the Third im Forum .NET ArchivAntworten: 1Letzter Beitrag: 05.10.04, 08:46 -
UDP Broadcast Problem
Von inti im Forum C/C++Antworten: 1Letzter Beitrag: 29.06.04, 11:26 -
broadcast
Von Luda im Forum NetzwerkeAntworten: 6Letzter Beitrag: 28.10.03, 20:58 -
broadcast
Von galdasc im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 15.08.02, 13:05





Zitieren
Login





