【发布时间】:2010-11-01 07:35:09
【问题描述】:
我有一个需要转换的网络应用程序,以便它适用于 ipv6 网络。你能告诉我我需要做什么(替换套接字 API)吗?
还有一件事,我如何测试我的应用程序?
谢谢。
【问题讨论】:
-
应用程序是用c++编写的
我有一个需要转换的网络应用程序,以便它适用于 ipv6 网络。你能告诉我我需要做什么(替换套接字 API)吗?
还有一件事,我如何测试我的应用程序?
谢谢。
【问题讨论】:
核心套接字系统调用是协议中立的。您将需要使用 AF_INET6 而不是标准的 AF_INET 地址系列,以及 PF_INET6、sockaddr_in6 和其他适当的。
我建议阅读“ipv6”手册页或“ipv6 的套接字接口扩展”RFC:http://www.ietf.org/rfc/rfc3493.txt
类似且可能相关的问题:is ipv6 backward compatable with ipv4?
【讨论】:
为了进行测试,您可以使用 Microsoft Virtual PC(或类似设备)创建一堆虚拟机并在它们之间测试应用程序 - 您可以轻松地将它们放在只能互相看到的专用网络上。
【讨论】:
“Unix 网络编程”的3rd edition 在 IPv4/IPv6 互操作性方面有大量示例和一整章。
【讨论】:
看看http://gsyc.escet.urjc.es/~eva/IPv6-web/ipv6.html - 这是一个相当全面的资源,并且有一些对 RFC 的有用参考。
出于测试考虑,如果您的应用程序将是双栈的,请考虑以下故障场景:IPv6 流量可能由于各种原因成为黑洞,一个示例场景是用户使用 6to4 任播隧道,但他们的流量往返于 192.99.88.1 (任播 6to4 中继地址)被丢弃。尝试测试这种情况并确保应用程序在不破坏用户体验的情况下优雅地回退,这将在以后节省一些支持电话。
(注意:我说的是黑洞,因为在路由问题等“正常”错误的情况下,错误通常会很快返回。所以你可以考虑在主机之间放置一些你可以使用的路由器配置为静默丢弃数据包)
【讨论】: