绑定套接字的方式有何不同?如下所示:
与此相比:
根据 HOWTO,将绑定到
sock.bind((socket.gethostname(), 9999))
与此相比:
sock.bind(('', 9999))
根据 HOWTO,将绑定到
socket.gethostname()
使套接字对外可见。但是,它还说,将绑定到''
可以使套接字被机器拥有的任何地址访问。这是否意味着它也可以被外部世界访问?我猜测,将绑定到''
允许套接字从同一台机器(通过环回)以及其他机器访问,而将绑定到socket.gethostname()
仅允许来自其他机器(包括相同的机器,但不能通过环回接口)的连接。如果我理解有误,请告诉我。此外,如果我在路由器后面,使用这两种绑定方法监听来自Internet的连接,是否仍需要设置某种端口转发?或者将绑定到''
是否允许我直接侦听对我的公共IP的连接?谢谢。
socket.gethostname()
的绑定实际上是做什么的?你所说的“关联接口”是什么意思? - b_pcakesgethostname
返回机器的主机名。机器的主机名(在控制台上键入hostname
)将被解析为一个 IP 地址。套接字绑定到的是 IP 地址(而不是主机名本身)。 - user2864740''
,而不需要设置端口转发或任何类似的东西吗? - b_pcakes''
与0.0.0.0
效果上是一样的,对吗? - b_pcakes