2017-02-27 1 views
-1

Ich habe eine DatagramSocket über die UDP-Paket vom Client zum Server und umgekehrt gesendet werden. Ich muss IP-Quelladresse im Antwortpaket zum Client einschließen. Gibt es eine Möglichkeit, eine solche IP-Adresse mit Java zu erhalten?erhalten IP-Adresse der Quelle in Datagrammsocket in Java

Ich füge eine Klarstellung hinzu Ich habe keine Kontrolle in UDP-Client, das ist ein Drei-Parteien-Client. Ich kann nur Kontrolle in UDP-Server haben. Daher kann DatagramPacket.getAddress() nicht im Quellcode des Clients, sondern nur im Quellcode des Servers verwendet werden. Ich weiß, dass IP-Adresse Quelle in das Datagrammpaket nicht notwendig ist, da die Quell-IP-Adresse immer für den Empfänger verfügbar ist (von UDP-Header denke ich), aber in meinem Fall habe ich eine Art von Handshake zwischen Client und Server Server-Adresse in UDP-Nutzdaten aufnehmen

CLIENT 192.168.XX UDP-Paket zu diesem Server zu Server 192.168.255.255:8010 Antwort senden sollte zurück an den Client eine Wiederholung in Datagrampacket Wich senden Ich sollte die Server-Adresse hinzufügen (ES 192.168.yy)

Antwort

1

Antwort auf Ihre aktualisierte Frage:
Holen Sie sich die IP-Adresse Ihres Servers "Getting the IP address of the current machine using Java" und fügen Sie sie in die Payload ein, die Sie an Ihren Client senden.

+0

DatagramPacket.getAddress() gibt die IP-Client-Adresse zurück, in meinem Fall möchte ich die Server-IP-Adresse haben. Client ein UDP-Paket an meinen Server senden (sagen wir ** receivedPacket **), ich muss ein Antwortpaket für den Client erstellen, in dem ich die ServerIpAddress setzen – pikimota

+0

@pikimota Nein, tut es nicht. Es gibt die IP-Adresse * source * zurück. – EJP

+0

Ok, aber ich muss diese Informationen UPD Payload hinzufügen, nicht nur die UDP-Header – pikimota

0

Ich habe die IP-Adresse Quelle umfassen in Antwortpaket an den Client

Nein, haben Sie nicht. Es ist schon da drin. Der Client muss nur DatagramPacket.getAddress()/getPort()/getSocketAddress() anrufen.

Wenn dies zum Senden einer Antwort dient, besteht die einfache Möglichkeit darin, das empfangene DatagramPacket wiederzuverwenden und nur die Daten zu ändern, wobei die Adressinformationen allein gelassen werden.

+0

Also, was ist deine Frage? Sie wissen, was Ihre Quell-IP-Adresse ist, haben Sie das 'DatagramPacket', was ist das Problem? – EJP