Python 使用miniupnp在internet上打开套接字服务器
我试图在库Python 使用miniupnp在internet上打开套接字服务器,python,sockets,upnp,Python,Sockets,Upnp,我试图在库miniupnpc转发的特定端口上打开服务器套接字。问题是我无法从其他外部设备以任何方式访问我的服务器。下面是server.py: from miniupnpc import UPnP import socket upnp = UPnP() def forward_port(port_no): upnp.discoverdelay = 10 upnp.discover() upnp.selectigd() upnp.addportmapping(po
miniupnpc
转发的特定端口上打开服务器套接字。问题是我无法从其他外部设备以任何方式访问我的服务器。下面是server.py:
from miniupnpc import UPnP
import socket
upnp = UPnP()
def forward_port(port_no):
upnp.discoverdelay = 10
upnp.discover()
upnp.selectigd()
upnp.addportmapping(port_no, 'TCP', upnp.lanaddr, port_no, ' ', '')
def close_port(port_no):
upnp.deleteportmapping(port_no, 'TCP')
PORT = 6666
try:
forward_port(PORT)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', PORT))
s.listen(1)
print(s)
conn, addr = s.accept()
print(addr, 'connected')
conn.send(b'some response')
finally:
close_port(PORT)
client.py:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('My public ip', 6666))
print(s.recv(1024))
s.close()
服务器打印出套接字元素,但从未打印出addr。客户端出现超时错误。服务器和客户端都出现了什么错误?有帮助吗?I Liju,我在问题结束时已经告诉过,服务器从未出现任何错误,但仍在等待连接,客户端出现超时错误。似乎端口从未被转发过…嗨,rveerd,我会在你链接到我的答案的每一点上回答:1)我的客户(总是我)知道我的静态路由器IP。2) 正如我已经告诉ebove的,我有一个静态IP。3) 我使用miniupnpc来避免手动将端口转发到我的路由器,据我在互联网上看到的,这对除我之外的所有人都有效。4) 我没有任何活动防火墙。5) 我总是检查我的IP地址,它总是一样的。