【发布时间】:2011-06-16 16:01:13
【问题描述】:
我有一个程序可以监听连接并处理它们。我知道许多网络堆栈支持通过同一套接字/端口接受 IPv4 和 IPv6 连接,但我也听说 Windows XP 不是其中之一。为了让相同的代码在所有平台上运行良好,我应该只在单独的端口上监听 IPv6 连接吗?
【问题讨论】:
-
为什么不直接绑定两个具有相同端口号的 v6 和 v4 套接字呢?这不是一个复杂的概念。
-
@Jeremy - 如果您正在谈论将 IPv4 和 IPv6 流量放在同一个端口上,那么这在 XP 中是行不通的。它在 Vista 和 Windows 7 中运行良好,但 XP 无法处理(根据下面列出的 Microsoft 解释)。
-
据我所知,这仍然不正确。所有文章都说在 XP 上,您需要同时绑定 AF_INET 和 AF_INET6 以在同一端口上同时支持 v4 和 v6,这与其他操作系统不同,您可以通过 v4 映射地址在单个 AF_INET6 套接字上支持 v4 和 v6。 (除非我看错了,这完全有可能。)
标签: c networking ipv6 sockets