获取Java中datagramsocket中源的IP地址

获取Java中datagramsocket中源的IP地址,java,udp,Java,Udp,我有一个DatagramSocket,通过它可以将UDP数据包从客户端发送到服务器,反之亦然。我必须在给客户端的回复包中包含IP源地址。有没有一种方法可以使用Java获取IP地址 我补充一些澄清 我无法控制UDP客户端,这是第三方客户端。我只能控制UDP服务器。因此,我不能在客户端源代码中使用DatagramPacket.getAddress(),而只能在服务器源代码中使用。 我知道不必在数据报数据包中包含IP地址源,因为源IP地址始终可供接收器使用(我认为来自UDP报头),但在我的情况下,客户

我有一个
DatagramSocket
,通过它可以将UDP数据包从客户端发送到服务器,反之亦然。我必须在给客户端的回复包中包含IP源地址。有没有一种方法可以使用Java获取IP地址

我补充一些澄清 我无法控制UDP客户端,这是第三方客户端。我只能控制UDP服务器。因此,我不能在客户端源代码中使用DatagramPacket.getAddress(),而只能在服务器源代码中使用。 我知道不必在数据报数据包中包含IP地址源,因为源IP地址始终可供接收器使用(我认为来自UDP报头),但在我的情况下,客户端和服务器之间有某种握手,因此我必须在UDP有效负载数据中包含服务器地址

客户端192.168.x.x将UDP数据包发送到服务器192.168.255.255:8010
作为对此的答复,服务器应向客户端发回一个重播数据包,其中我应添加服务器地址(es 192.168.y.y)

回答您更新的问题:
获取服务器的IP地址,并将其包含在发送给客户端的有效负载中

我必须将IP源地址包含在客户端的应答包中

不,你没有。它已经在里面了。客户端只需调用
DatagramPacket.getAddress()/getPort()/getSocketAddress()


如果这是为了发送回复,最简单的方法是重用接收到的
DatagramPacket
,只需更改数据,而不使用地址信息。

DatagramPacket.getAddress()返回IP客户端地址,在我的情况下,我希望有服务器IP地址。客户端向我的服务器发送一个UDP数据包(比如receivedPacket),我必须为客户端创建一个应答数据包,我将serverIpAddress@pikimota不,没有。它返回源IP地址。好的,但我必须将此信息添加到UPD有效负载,而不仅仅是UDPheader@pikimota不,你没有。源IP地址始终可供接收器使用。如果接收器是Java,那么它正是通过这种方法实现的。如果接收器正在调用Berkeley Sockets API,则可通过
recvfrom()
和friends的第四个参数使用该API。您不必将其添加到有效负载。那么您的问题是什么?你知道你的源IP地址是什么,你有
数据包
,有什么问题??