# Alle IP Adressen im Netzwerk auflisten



## Bismark (19. Juni 2010)

Hi Leute,
ich hätte da mal eine frage. Ist es in C++ möglich alle IP Adressen im Netzwerk zu suchen/(heraus)finden und diese heraus zu geben, ohne umbeding, dass auf ein Computer ein"C++ Server" läuft und auf alle anderen ein "C++ Client".

MfG
Bismark


----------



## Kai008 (19. Juni 2010)

Ich weiß nicht, ob es funktioniert, aber du kannst mal versuchen, an den Lan-Broadcast einen ping zu schicken. Falls das nicht funktioniert, musst du wohl in mehr Threads paralell die Rechner anpingen.


----------



## 3Cyb3r (20. Juni 2010)

Hallo
Also das hängt ganz von den verwendeten Betriebssystemen im Netzwerk ab und der Art und Weise wie den Netzwerk funktioniert (Hub, Switch, Router ....).
MFG (Bei Windows ist dies möglich)


----------



## Bratkartoffel (21. Juni 2010)

Hallo,

@kai008: habe es gerade getestet und es ist nicht möglich, alle Rechner im Netzwerk über einen Broadcast-Ping herauszufinden. Bei mir zu Hause (1 WinXP, 1 Win7, 2 Debian Lenny, 1 Fritzbox) anwortet nur die Fritzbox auf einen Broadcast-Ping.

@3Cyb3r: Bei einem Broadcast ist die Netzwerkstruktur egal; Hubs leiten sowiso alle Anfragen an alle Ports weiter, ein Switch ingegen nur Broadcasts.

@Bismark:
Wenn man dein Problem mal aufbröckelt, so stellen sich folgende Probleme / Schritte:
Zuerst musst du einmal rausfinden, welches Subnetz du an deiner Karte hängen hast. Da du das ganze in C++ realisieren möchtest, denke ich dass du hierbei Plattformunabhängig bleiben möchtest. Eventuell kann dir hier Google weiterhelfen.
Sobald du das Netz hast, kannst du alle IP-Adressen im dem Netz in einer Schleife durchlaufen und die ICMP-Ping Nachrichten schicken und die Antworten interpretieren.

Gruß
BK


----------



## deepthroat (21. Juni 2010)

Hi.

Du könntest ja mal in die Quellen von fping schauen (http://fping.sourceforge.net/).

Gruß


----------



## Jellysheep (21. Juni 2010)

Hi, 
die gleiche Frage hatte ich auch mal. 
(siehe hier, dort steht auch der etwas ältere Sourcecode der Lösung zur Verfügung)
Nachdem ich alle möglichen Ping-Codes ausprobiert habe, die alle an den Firewalls versagt haben, hab ich dann diese Lösung gefunden: 
1. alle IP-Adressen des Netzwerks (bei mir 192.168.178.2 bis 192.168.178.255) mittels der Funktion _getnameinfo _nach dem Hostnamen zu fragen. Hierdurch werden alle Computer angezeigt, die schonmal im Netzwerk waren. 
2. mit der Funktion SendARP testen, ob der Computer erreichbar ist oder nicht, und gleichzeitig MAC-Adresse abfragen.

Der Vorteil des Programms: Bei mir im Netzwerk kann es trotz mehreren Firewalls alle Computer finden. 
Wenn deine IP-Adresse im Netzwerk auch mit 192.168.178.* anfängt, kannst du mal das Programm im Anhang testen. Wenn nicht, schreibe mir einfach deine IP und ich änder es nochmal ab, den Code dazu suche ich gerade.


----------

