Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用miniupnp在internet上打开套接字服务器_Python_Sockets_Upnp - Fatal编程技术网

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地址,它总是一样的。