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

时间:2015-07-10 21:06:06

标签: 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: " + 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()

所以服务器似乎在本地工作正常,但如果我要求我的朋友在不同的网络上连接,它不会连接。我尝试从路由器端口转发 http://i.stack.imgur.com/wSUir.png(无法发布img显然导致my_reputation< 10)

我也试过使用ip来自whatismyip网站,但我得到错误:

  

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

关于我可以做什么的任何想法,以便其他人可以连接?感谢。

1 个答案:

答案 0 :(得分:1)

当您尝试从局域网外部访问服务器时,您应该在创建套接字对象时使用0.0.0.0作为您的IP地址。 0.0.0.0通常表示默认路由(到&#34的路由;&#34的其余部分;互联网,除了本地网络中的路由等)。如果您使用DCHP分配的IP地址(在您的情况下是路由器),连接到网络(路由器)的设备只知道您的IP地址是您在$ ifconfig命令中获得的,即私有IP地址客户不知道