我使用名为“packet”的DatagramPacket对象接收来自网络的数据包,并使用数据包对象获取发送方的IP地址(即使用packet.getAddress())。但是,它返回表示发送方的IPv6地址,而我需要IPv4地址。有没有办法达到我想要的目的?
答案 0 :(得分:0)
IPv4和IPv6是单独的协议。如果您获得了IPv6地址,那么您会收到基于IPv6的数据包,因此这是您将看到的地址。 IPv6正在全球范围内部署,因此您的软件必须处理它。 IPv4地址和IPv6地址之间没有关系,因此如果您看到IPv6地址,那就是您要获得的全部内容。
唯一的例外是通过IPv6套接字接收IPv4数据包。在这种情况下,您将看到以::ffff:
开头的IPv6地址。之后是IPv4地址。在这种情况下,您实际上并不是通过IPv6进行通信,因此您可以看到IPv4地址。