Netzwerk-discovery, die in Java Verwendung von multicasting
Ich versuche zu machen, ein client/server-Java-Anwendung. Client und server laufen auf der gleichen wi-fi-Netzwerk. - Server ausgeführt wird, auf einem bestimmten port, der client kennt.
Ich bin der Planung zum senden einer multicast-Nachricht vom client über das Netzwerk für diesen bestimmten port zu entdecken, die server. Allerdings bin ich mir auch nicht sicher, wie ich herausfinden kann, welche IP in meinem Netzwerk erhielt meine Nachricht.
Brauche ich zum erstellen einer socket auf dem client und hören auf eingehende Pakete einmal schicke ich meine multicast-Nachricht in der server-Antworten zurück?
Vielen Dank im Voraus.
InformationsquelleAutor der Frage mohi666 | 2010-07-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
(1)server lauscht auf einem pre-arranged-port
(3)der client sendet eine Nachricht an den port an die broadcast-IP 255.255.255.255
der Kunde bindet sich an einen port zu. wir es nicht geben, so ist es zufällig für uns entschieden.
(3) wird die broadcast-Nachricht an alle lokalen Rechner, server auf (1) erhält eine Nachricht, mit der client-IP:port.
(2) server sendet Antwortnachricht an client IP:port
(4) client bekommt die Antwort-Nachricht vom server.
InformationsquelleAutor der Antwort irreputable
Ich würde dringend empfehlen, mit JGroups. Es hat eine Menge Funktionen, und es wird alles tun, das UDP-Zeug. JBoss nutzt es für Ihre clustering.
InformationsquelleAutor der Antwort Romain Hippeau
Können Sie versuchen, mit
java.net.MulticastSocket
(vorhanden seit Java 1.1). Wenn Sie brauchen nicht die Funktionsvielfalt stellt der libs wie jgroupshazelcast etc. einfache Java-API möglicherweise dienen Sie gut genug.Siehe auch Beispiel Seiten hier und hier.
InformationsquelleAutor der Antwort Jörg
Sie könnten versuchen, mit SSDP. Es ist das, was UPnP-Geräte verwenden, sich gegenseitig zu entdecken. Es ist multicast-port 1900 und nur verwendet es wirklich einfach, Pakete zu senden, um IP-Adressen und service-Informationen.
Klammern ist ein UPnP-lib können Sie ziehen aus. Hinweis: ich bin nicht empfehlen Sie zu bewegen, um UPnP - gerade die discovery-Protokoll verwendet.
InformationsquelleAutor der Antwort Anon