我应该在与IPv4不同的端口上侦听IPv6连接吗?

4 c sockets networking ipv6

我有一个程序,它监听连接并处理它们.我知道许多网络堆栈支持通过同一个套接字/端口接受IPv4和IPv6连接,但我也听说Windows XP不是其中之一.为了在所有平台上运行相同的代码,我应该只在单独的端口上监听IPv6连接吗?

And*_*rey 5

Windows XP SP2 +实现了dual-stack IP体系结构.这意味着您可以拥有两个套接字(一个用于AF_INET,另一个用于AF_INET6系列),这两个套接字绑定到相同的端口号.这很好用.

注意:如果您的目的是使用单个套接字来处理IPv4和IPv6连接,那么您依赖dual IP layer stack于Windows Vista及更高版本中实现的所谓体系结构(在这种情况下,您必须禁用IPV6_V6ONLY该套接字上的选项).

请参阅Microsoft的IP版本6目标

还要查看IPv6过渡应用程序方面的一般建议(RFC 4038).

PS:BiggsTRC目前接受的答案通常不准确,如相应的评论中所述.但是,如果你使用两个端口号就可以了 - 那么这个答案仍然很有意义.

PS2:我使用了链接文章中的术语.不确定是否有任何其他平台在术语dual-stackdual-layer术语之间使用这种分离.