【发布时间】:2015-08-22 16:45:54
【问题描述】:
所以我有一个典型的 UDP 服务器和客户端。 服务器绑定到 IP '0.0.0.0' 端口 20000。 据我所知,它将绑定到来自我的主机的任何 IPv4 地址 例如,包括我的内部 IP 192.168.1.2。但是,当它们发送到本地主机(127.0.0.1)时,我会收到消息,但当我的客户端发送到我自己的计算机内部 IP 地址时,我不会收到消息,如下面的代码。我的内部 IP 是从 cmd ipconfig 获得的。 两个应用程序在同一台计算机上运行
服务器代码:
import socket
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind(('0.0.0.0',20000))
print("listening at 0.0.0.0 at port 20000")
data,address= s.recvfrom(65535)
print "MESSAGE FROM",address,":",data
s.close()
客户端代码:
import socket
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind(('127.0.0.1',50000))
s.sendto("MESSAGE1!",('192.168.1.2',20000))
print 'message sent!'
s.close()
解决方案:我发现我无法从客户端套接字向“外部”ip 192.168.1.2 发送数据包,当它绑定到本地主机 ip 时,例如 127.0.0.1。通过将客户端套接字更改为 192.168.1.2,我可以将其发送到它自己的外部 ip 192.168.1.2
【问题讨论】:
-
尝试(暂时)禁用计算机上的防火墙以查看您的连接是否被阻止可能会有所帮助
-
我在同一台机器上发送 2 个数据包
标签: python python-2.7 sockets networking