IPv6套接字创建。

| 我正在实现双堆栈模式以支持IPv4和IPv6。 如果我正在创建一个IPv6套接字并进行侦听,它将接受来自IPv4套接字的连接吗?     
已邀请:
        是,除非另行配置了操作系统,例如在Linux中为“ 0”,或者设置为“ 1”套接字选项。     
        仅当系统具有双堆栈实现时。大多数现代系统都支持,但是Windows和OpenBSD的旧版本却没有。但是,您不应该依赖此。获取IPV6_V6ONLY套接字选项的值,如果该值为零,则需要为IPv4打开第二个套接字。 使用双栈套接字时,IPv4地址表示为“ 2”;例如
::ffff:127.0.0.1
(相当于
::ffff:7f00:1
;为便于阅读,通常以点十进制表示)。     
        根据Microsoft的说法,即使在双堆栈模式下,默认值也是将IPV6_V6ONLY设置为false-但您可以通过setsockopt(2)调用启用它。 FWIW,Windows的“旧版本”(单堆栈)包括仍在广泛使用的Windows XP(早于Vista的任何版本)。 因此,如果您使用的是Windows,则应尝试禁用IPV6_V6ONLY,然后查看它是否成功。我不知道这是否是其他单栈实现的好答案。     

要回复问题请先登录注册