[英]How to bind both IPv4 and IPv6 source address to Python socket?
我希望使用 sockets 創建一個 TCP 服務器,它綁定到 IPv4 和 IPv6 地址。
有沒有辦法在不創建 2 sockets 的情況下做到這一點?
您正在尋找的功能稱為“雙棧”,或 IPv4 + IPv6 雙棧套接字。
從 Python 3.8 開始,您可以使用socket.create_server()
輕松完成此操作。
設置參數dualstack_ipv6=True
將允許您在受支持的系統上使用同一套接字偵聽 IPv4 和 IPv6 地址。
如果您想檢查您的系統是否支持雙棧 sockets,請使用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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.