对于现代操作系统,双栈[1] IPv6套接字可以完成所有工作 .

但是,Windows XP仍然被中国很多人使用,我们不能忽视Windows XP的支持 . 不幸的是,Windows XP不支持双栈IPv6套接字 . [2]

所以我的方法是:

  • 尝试创建IPv6套接字并将其设置为双栈 .

  • 如果成功,请继续使用它 .

  • 如果失败,请关闭IPv6套接字(如果存在),然后创建IPv4套接字 .

我走对了路吗?我假设没有人使用仅支持IPv6的Windows与Windows XP连接 .


[1]:调用setsockopt,IPV6_V6ONLY = 0 .

[2]:没有Service Pack的Windows XP不支持IPv6 . Windows XP Service Pack> = 1支持没有双栈的IPv6 .