1

我有一个使用 ipv4 编写的小 udp 示例程序。如果我将代码更改为 ipv6,我是否仍然能够与使用具有 ipv4 地址的侦听器的任何人通信?我正在查看移植示例

http://ou800doc.caldera.com/en/SDK_netapi/sockC.PortIPv4appIPv6.html

我不确定简单地更改代码是否可以确保它工作,或者我是否必须以决斗堆栈模式编写它。

4

3 回答 3

7

是也不是... IPv6 确实包含完全不同的寻址,因此您必须重新编码您的应用程序以使用替代标头和结构大小。

但是,IPv4 地址范围在 IPv6 中可用,语法是在标准地址前添加两个冒号(例如 ::10.11.12.13)。您还可以在 IPv6 数据包中嵌入 IPv4 地址

于 2009-05-27T14:24:39.120 回答
5

并非没有网络中IPv4/IPv6 网关的帮助,即使如此,通信也会受到网络地址转换网关引入的典型问题的限制。对于面临此类决策的程序员,传统的建议是建议同时支持 IPv4 和 IPv6。

于 2009-06-02T19:15:07.897 回答
1

IPv4 和 IPv6 本质上是互不兼容的。
几个基本原因:

  • 地址空间完全不同(IPv6 有 128 位地址,IPv4 有 32 位地址)
  • IPv6 的协议头看起来不像 IPv4 的协议头。如果您尝试将 IPv6 数据包解析为 IPv4,那么您会胡说八道。

这些明显的结果是,如果您打开 IPv6 套接字,则无法使用 IPv4 套接字收听它。

于 2009-05-27T14:18:13.080 回答