Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.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服务器仅在本地wifi上工作_Python_Python 2.7_Network Programming_Ip_Server - Fatal编程技术网

Python服务器仅在本地wifi上工作

Python服务器仅在本地wifi上工作,python,python-2.7,network-programming,ip,server,Python,Python 2.7,Network Programming,Ip,Server,守则: import socket, threading server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(("my ipv4 from ipconfig", 12)) server.listen(5) def client_handler(client_socket): request = client_socket.recv(100) print "[*] Received:

守则:

import socket, threading

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

server.bind(("my ipv4 from ipconfig", 12))

server.listen(5)

def client_handler(client_socket):
    request = client_socket.recv(100)

    print "[*] Received: " + request

    client_socket.close()

while True:
    client, addr = server.accept()
    print "[*] Accepted connection from: %s:%d" % (addr[0], addr[1])
    servert = threading.Thread(target=client_handler, args=(client,))
    servert.start()
因此,服务器在本地似乎工作正常,但如果我让我在另一个网络上的朋友连接,它不会连接。我尝试从路由器进行端口转发 (显然无法发布img导致我的声誉<10)

我还尝试使用从whatismyip网站获得的ip,但我得到了错误:

错误:[Errno 10049]请求的地址在其上下文中无效


我能做些什么让其他人能联系起来?谢谢。

当您试图从LAN外部访问服务器时,您应该在创建套接字对象时使用0.0.0.0作为IP地址。0.0.0.0通常表示默认路由(到internet“其余部分”的路由,除了本地网络中的路由等)。如果您使用DCHP分配的IP地址(在您的情况下是路由器),则连接到网络(路由器)的设备只知道您的IP地址是您在$ifconfig命令中获得的,这是一个客户端不知道的专用IP地址

,看起来您正在设置转发到相同的IP。您的WAN IP应该是您的公共IP(您从whatismyip获得的),您的LAN IP应该是您的本地计算机的IP(您从ipconfig获得的)。尝试使用0.0.0:作为您的IP地址,然后选中。因此,如果我使用“0.0.0.0”,我必须向客户端提供哪个IP?公共的那个?谢谢:)是的,是公共的,你需要确保你的NAT端口正确地转发到你的私有IP。是的,如果你正在使用路由器,检查路由器上的网桥功能,它会将所有WAN流量转发到LAN端口,这样你就可以在你的设备上的LAN端口直接使用公共IP。哥们,最后一个问题,在客户端脚本:client.connect((“”,port))中,我输入哪个ip,它不接受公共oneNo,我指的是另一个网络上的客户端。它将数据包发送到服务器