Java DatagramPacket对象返回IPV6地址但需要IPv4

时间:2014-04-15 07:51:20

标签: java android udp ipv6 ipv4

我使用名为“packet”的DatagramPacket对象接收来自网络的数据包,并使用数据包对象获取发送方的IP地址(即使用packet.getAddress())。但是,它返回表示发送方的IPv6地址,而我需要IPv4地址。有没有办法达到我想要的目的?

1 个答案:

答案 0 :(得分:0)

IPv4和IPv6是单独的协议。如果您获得了IPv6地址,那么您会收到基于IPv6的数据包,因此这是您将看到的地址。 IPv6正在全球范围内部署,因此您的软件必须处理它。 IPv4地址和IPv6地址之间没有关系,因此如果您看到IPv6地址,那就是您要获得的全部内容。

唯一的例外是通过IPv6套接字接收IPv4数据包。在这种情况下,您将看到以::ffff:开头的IPv6地址。之后是IPv4地址。在这种情况下,您实际上并不是通过IPv6进行通信,因此您可以看到IPv4地址。