无法在同一程序中发送和接收UDP消息
我可以在不同的程序中发送和接收UDP消息,但在一个程序中却做不到这一点。
import socket
UDP_IP = "192.168.1.178"
UDP_PORT = 8888
msg = 'test'
print "UDP target IP: ", UDP_IP
print "UDP target PORT: ", UDP_PORT
print "Message: ", msg
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(msg, (UDP_IP, UDP_PORT))
UDP_IP2 = "192.168.1.198"
sock.bind((UDP_IP2, UDP_PORT))
while True:
data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
print "received message:", data
用这个程序,我可以发送UDP消息,但就是收不到来自另一台机器的消息。
我哪里做错了呢?
提前谢谢你们,
Mikkel
1 个回答
1
在你的例子中,你试图在发送数据后绑定套接字地址,这样做是错误的。地址只能在任何数据传输之前绑定到套接字。
如果没有明确绑定,操作系统会在第一次调用 .send()/.recv()
时自动设置一个范围在 [1024, 65535] 之间的空闲(未使用)端口号。
之后,套接字只能绑定到一个单独的IP地址(除了特殊情况 '0.0.0.0',它表示“所有主机的接口”)。