我目前正在开发 UDP 套接字应用程序,需要构建支持,以便 IPV4 和 IPV6 连接可以将数据包发送到服务器。
我希望有人能帮助我并为我指明正确的方向;我发现的大部分文档都不完整。如果您能指出 Winsock 和 BSD 套接字之间的任何差异,也会很有帮助。
提前致谢!
最好的方法是创建一个也可以接受 IPv4 连接的 IPv6 服务器套接字。为此,请创建一个常规 IPv6 套接字,然后将off套接字选项IPV6_V6ONLY
,将其绑定到“任意”地址,然后开始接收。 IPv4 地址将呈现为 IPv6 地址,在IPv4 映射 http://en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses format.
不同系统之间的主要区别在于是否IPV6_V6ONLY
a) 可用,b) 默认打开或关闭。它在 Linux 上默认是关闭的(即允许双栈套接字而不需要 setsockopt),而在大多数其他系统上是打开的。
此外,Windows XP 上的 IPv6 堆栈不支持该选项。在这些情况下,您将需要创建两个单独的服务器套接字,并将它们放入 select 或多个线程中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)