我能够在单独的程序中发送和接收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
答案 0 :(得分:1)
在您的示例中,您尝试在发送后绑定套接字addr,出了什么问题。 在任何数据传输之前,地址只能绑定到
。如果没有显式绑定操作系统在第一次.send()/.recv()
呼叫中设置范围[1024,65535]中的任何空闲(未使用)端口号。
接下来,套接字只能绑定到单个IP(除了特殊情况'0.0.0.0',这意味着“所有主机的接口”)。