2009-07-09 7 views
1

Kann mir jemand auf ein Tutorial hinweisen, wie man eine Ping-Methode mit C-Sockets einrichtet? Mit Hilfe von beej's Guide konnte ich eine Verbindung zwischen zwei Geräten herstellen, aber jetzt möchte ich eine Methode einrichten, die für alle verfügbaren Geräte pingt, bevor eine Verbindung hergestellt wird. Ich habe das noch nie gemacht, also würdest du etwas wie einen Multicast-Socket einrichten, um ein leeres Datenpaket zu übertragen und dann den Empfänger dieses leeren Pakets mit seiner IP-Adresse füllen und das nun volle Datenpaket zurückgeben, damit du es Hast du die Adresse um die Verbindung zu starten? Jede Anleitung/Hilfe wäre willkommen!C-Sockel Ping-Befehl?

+0

So möchten Sie ping, was verwendet ICPM-Protokoll oder eine Sendung UPD? –

+0

ICMP Entschuldigung, http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol –

Antwort

2

Die meisten aktuellen IP-Stapel antworten nicht auf eine Ping-Anfrage an eine Broadcast-Adresse. Die Funktion wurde für Denial-of-Service-Angriffe missbraucht.

eine echte Ping-Implementierung Die Implementierung wird nicht einfach sein, würde ich vorschlagen, dass Sie eine vorhandene lib verwenden: http://www.kernelthread.com/projects/hanoi/html/icmp.html

Aber Sie werden manuell über alle IP-addrs in Ihrem Subnetz laufen müssen, um sie zu bekommen Antworten.

+1

Einverstanden. Keine Notwendigkeit, das Rad neu zu erfinden. –

+0

Nun, das klingt, als wäre es der einzige Weg, wie ich im Moment tun kann, was ich will, außer mir fällt etwas anderes ein. Was ich im Grunde mache, ist mehrere iPod touch-Geräte zu nehmen und ein verteiltes Computer-Setup zu erstellen. Die Idee ist, dass ein iPod in der Lage ist, für Server zu pingen (auf den anderen iPod-Berührungen eingerichtet) und wenn sie verfügbar sind (in Reichweite), dann senden Sie ihnen eine Aufgabe zu tun. Ich benutze C-Sockets (erwähnen Sie nicht einmal CFNetwork, ich hatte genug Ärger mit diesem dummen Framework lol), um die Verbindungen einzurichten. Irgendwelche Ideen, wie man pingt, ohne die IPs in meinem Subnetz durchlaufen zu müssen? –

+0

Anstatt den iPod jedes Gerät anpingen zu lassen, warum sollte nicht jedes Gerät ein Paket ausstrahlen, das angibt, dass es verfügbar ist? –