我有一个使用ipv4编写的udp示例程序。如果我将代码更改为ipv6,那么我仍然可以与使用具有ipv4地址的侦听器的任何人通信?我在是ipv6向后兼容ipv4吗?
http://ou800doc.caldera.com/en/SDK_netapi/sockC.PortIPv4appIPv6.html
看着移植的例子,我不知道,如果简单地改变代码将确保它的工作,或者如果我不得不把它写在决斗堆叠模式。
我有一个使用ipv4编写的udp示例程序。如果我将代码更改为ipv6,那么我仍然可以与使用具有ipv4地址的侦听器的任何人通信?我在是ipv6向后兼容ipv4吗?
http://ou800doc.caldera.com/en/SDK_netapi/sockC.PortIPv4appIPv6.html
看着移植的例子,我不知道,如果简单地改变代码将确保它的工作,或者如果我不得不把它写在决斗堆叠模式。
是和否...... IPv6确实包含完全不同的地址,因此您必须重新编码您的应用以使用替代标头和结构大小。
但是,IPv4地址范围在IPv6内可用,语法是在标准地址之前添加两个冒号(例如:: 10.11.12.13)。您也可以embed IPv4 addresses within IPv6 packets。
IPv4和IPv6在本质上彼此不兼容。
几个基本原因:
这些明显的结果是,如果您打开IPv6套接字,您将无法使用IPv4套接字来收听它。
不是没有网络中IPv4/IPv6 gateway的帮助,即使这样通信也会受到网络地址转换网关引入的typical problems的限制。面向这样的决策的程序员的传统建议是建议同时支持IPv4和IPv6。
这是严格正确的,但误导。 IPv6应用程序可以通过多种方式与IPv4主机通信。相反是不正确的。也可以监听IPv6套接字上来自IPv4应用程序的连接。 – Omnifarious 2009-09-10 20:40:21
这个答案强调错误的东西。 – 2010-07-05 15:57:16