如何将IPv4和IPv6源地址绑定到Python套接字?

3
我希望创建一个使用套接字的TCP服务器,绑定到IPv4和IPv6地址。是否有一种方法可以在不创建2个套接字的情况下实现呢?
1个回答

5
你需要的功能称为“双栈”,或IPv4 + IPv6双栈套接字。
自Python 3.8以来,您可以使用socket.create_server()轻松实现。
设置参数dualstack_ipv6=True将允许您在支持的系统上使用同一套接字侦听IPv4和IPv6地址。
如果您想检查系统是否支持双栈套接字,请使用socket.has_dualstack_ipv6()
来自Python文档的代码示例:
import socket

addr = ("", 8080)  # all interfaces, port 8080
if socket.has_dualstack_ipv6():
    s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True)
else:
    s = socket.create_server(addr)

1
注意:socket.create_server() 创建的是一个 TCP 套接字,不能用于 UDP。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接