我有一个
DatagramSocket
,通过它UDP数据包从客户端发送到服务器,反之亦然。我必须在给客户端的回复数据包中包含IP源地址。有没有办法使用Java获取IP地址等?
我补充一些说明: 我无法控制UDP客户端,这是第三方客户端。我只能控制UDP服务器。所以我不能在客户端源代码中使用 DatagramPacket.getAddress() ,而只能在服务器源代码中使用。 我知道没有必要在数据报包中包含 IP 地址源,因为源 IP 地址始终可供接收者使用(我认为来自 UDP 标头),但在我的情况下,客户端和服务器之间有某种握手,所以我必须在 UDP 有效负载数据中包含服务器地址。
CLIENT 192.168.x.x 发送 UDP 数据包到 SERVER 192.168.255.255:8010 回复此服务器应向客户端发送回重播数据报,我应在其中添加服务器地址(es 192.168.y.y)
回答您更新的问题:
获取服务器的 IP 地址 “使用 Java 获取当前计算机的 IP 地址” 并将其包含在发送给客户端的有效负载中。
我必须在给客户端的回复数据包中包含 IP 源地址
不,你不知道。它已经在那里了。客户只需致电
DatagramPacket.getAddress()/getPort()/getSocketAddress()
。
如果这是为了发送回复,最简单的方法是重复使用收到的
DatagramPacket
,只更改数据,保留地址信息。