我们需要将IPv4套接字移植到IPv4和IPv6的。 我想创建一个服务器IPv6套接字,它将绑定in6addr_any。 我知道它可以处理IPv4请求但我的问题是我们提供了几个绑定选项,其中一个例如绑定到地址。
我们希望能够处理IPv4和IPv6请求,这可以通过仅使用1个套接字来完成。
是否需要将套接字绑定到ipv4地址时会发生变化? 我们需要打开新的ipv4套接字吗?
任何建议如何支持它?
我希望我的问题有道理。 随意询问更多细节
答案 0 :(得分:1)
如果使用V6ONLY=0
创建IPv6套接字并绑定到通配符IPv6地址,则可以在该单个套接字上接受IPv4和IPv6连接。
如果要绑定到显式地址,则需要多个套接字:每个地址一个。尽管您可以使用IPv6套接字来处理所有内容,但最简单的方法是为要绑定的IPv4地址创建IPv4套接字,为IPv6地址创建IPv6套接字。
在最后一种情况下,为每个IPv4地址创建一个带V6ONLY=0
的IPv6套接字,并将其绑定到映射地址。对于IPv4地址aaa.bbb.ccc.ddd
,您将绑定到IPv6地址::ffff:aaa.bbb.ccc.ddd
(如果您的实现接受此表示法),或者绑定到::ffff:wwxx:yyzz
,其中ww
是{{1}的十六进制表示形式} {},aaa
xx
的十六进制版本等