Python套接字绑定到任何IP?

38

我有一个小型的单向消息发送器,在代码中指定连接的IP地址时可以正常工作,但是我无法让套接字接受来自任何IP地址的连接。以下是存在问题的代码行。

mySocket = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
mySocket.bind ( ( '', 2727 ) )

'' 代表本地主机,如果我手动输入IP地址,例如 '192.168.1.106',它就可以工作了。但是,我该如何将它对所有人开放?或者我正在使用错误的连接类型吗?

3个回答

49

能否绑定到完全自定义的 IP 地址,例如 152.64.87.9? - CMCDragonkai
1
@CMCDragonkai 只有你的系统与该地址有接口才行。 - Polynomial
所以在绑定它们之前,我需要创建这些接口。创建虚拟接口将会是回环吗? - CMCDragonkai
这只支持IPv4吗?那么绑定所有可用的IPv6地址呢? - Craig McQueen

16

绑定到 '' 和绑定到 '0.0.0.0' 的效果相同,这样可以更容易地过渡到IPv6。

根据操作系统的不同,打开一个 socket.AF_INET6 套接字可以同时监听IPv4和IPv6。


Python错误报告,以使文档更加明确:https://bugs.python.org/issue33921 - phoenix
1
根据文档''与IPv6不兼容:这种行为与IPv6不兼容,因此,如果您打算在Python程序中支持IPv6,则可能需要避免使用它们。 - phoenix

6

将绑定到0.0.0.0将允许它接受来自可以路由到它的任何IPv4地址的连接。


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