gpt4 book ai didi

python - python中的端口转发以允许套接字连接

转载 作者:太空狗 更新时间:2023-10-29 21:58:14 27 4
gpt4 key购买 nike

我使用套接字启动服务器并希望允许客户端连接到它。

self.sock.bind(('0.0.0.0',0)) # 0.0.0.0 will allow all connections and port 0 -> os chooses a open port.
stroke_port=self.sock.getsockname()[1]
self.sock.listen(75)
self.open_port_popup(stroke_port)

现在,对于要连接的其他客户端,我手动进行了端口转发,并且工作正常。 enter image description here

我想以自动化方式执行此操作。 -> 我试试 upnp。

import miniupnpc

def open_port(port_no):
'''this function opens a port using upnp'''
upnp = miniupnpc.UPnP()

upnp.discoverdelay = 10
upnp.discover()

upnp.selectigd()

# addportmapping(external-port, protocol, internal-host, internal-port, description, remote-host)
result=upnp.addportmapping(port_no, 'TCP', upnp.lanaddr, port_no, 'testing', '')
return result

它会打开一个端口,如下图所示。但是第一张图片中显示的端口转发列表是空的。它不起作用,客户端无法连接。我怎样才能解决这个问题?我错过了什么? enter image description here

最佳答案

我认为您使用 upnp.lanaddr 作为内部主机地址时犯了一个错误。 upnp.lanaddr 是您的路由器 upnp 设备的地址,您要使用服务器的本地地址。

如果需要,请查看 Finding local IP addresses using Python's stdlib如果您想动态获取服务器本地 IP。

关于python - python中的端口转发以允许套接字连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36123075/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com