【发布时间】:2014-05-29 10:46:02
【问题描述】:
我正在使用名为“packet”的 DatagramPacket 对象从网络接收数据包,并使用数据包对象获取发送者的 IP 地址(即使用 packet.getAddress() )。但是,它返回一个代表发件人的 IPv6 地址,而我想要一个 IPv4 地址。有没有办法实现我想要的?
【问题讨论】:
标签: java android udp ipv6 ipv4
我正在使用名为“packet”的 DatagramPacket 对象从网络接收数据包,并使用数据包对象获取发送者的 IP 地址(即使用 packet.getAddress() )。但是,它返回一个代表发件人的 IPv6 地址,而我想要一个 IPv4 地址。有没有办法实现我想要的?
【问题讨论】:
标签: java android udp ipv6 ipv4
IPv4 和 IPv6 是不同的协议。如果您获得 IPv6 地址,那么您会收到一个通过 IPv6 的数据包,这就是您将看到的地址。 IPv6 正在世界各地部署,因此您的软件将不得不处理它。 IPv4 地址和 IPv6 地址之间没有关系,所以如果您看到 IPv6 地址,那么您将得到的就是它。
唯一的例外是通过 IPv6 套接字接收 IPv4 数据包。在这种情况下,您将看到一个以::ffff: 开头的 IPv6 地址。之后是 IPv4 地址。在这种情况下,您并没有真正通过 IPv6 进行通信,因此您可以看到 IPv4 地址。
【讨论】: