Python 服务器只能在本地 wifi 上工作
Python server only working on local wifi
代码:
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(不能 post img 显然导致 my_reputation < 10)
我也尝试使用我从 whatismyip 网站获得的 ip,但我收到错误:
error: [Errno 10049] The requested address is not valid in its context
关于我可以做什么以便其他人可以联系的任何想法?谢谢
当您尝试从 LAN 外部访问您的服务器时,您应该在创建套接字对象时使用 0.0.0.0 作为您的 IP 地址。 0.0.0.0 通常表示默认路由(到 "the rest of" 互联网的路由,除了本地网络中的路由等)。如果您使用 DCHP 分配的 IP 地址(在您的情况下为路由器),则连接到网络(路由器)的设备只会知道您的 IP 地址是您在 $ifconfig 命令中获得的 IP 地址,一个私有 IP 地址客户不知道
代码:
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(不能 post img 显然导致 my_reputation < 10)
我也尝试使用我从 whatismyip 网站获得的 ip,但我收到错误:
error: [Errno 10049] The requested address is not valid in its context
关于我可以做什么以便其他人可以联系的任何想法?谢谢
当您尝试从 LAN 外部访问您的服务器时,您应该在创建套接字对象时使用 0.0.0.0 作为您的 IP 地址。 0.0.0.0 通常表示默认路由(到 "the rest of" 互联网的路由,除了本地网络中的路由等)。如果您使用 DCHP 分配的 IP 地址(在您的情况下为路由器),则连接到网络(路由器)的设备只会知道您的 IP 地址是您在 $ifconfig 命令中获得的 IP 地址,一个私有 IP 地址客户不知道