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,我指的是另一个网络上的客户端。它将数据包发送到服务器