无法在同一程序中发送和接收udp消息

时间:2014-09-10 19:42:20

标签: python sockets

我能够在单独的程序中发送和接收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 个答案:

答案 0 :(得分:1)

在您的示例中,您尝试在发送后绑定套接字addr,出了什么问题。 在任何数据传输之前,地址只能绑定到

如果没有显式绑定操作系统在第一次.send()/.recv()呼叫中设置范围[1024,65535]中的任何空闲(未使用)端口号。

接下来,套接字只能绑定到单个IP(除了特殊情况'0.0.0.0',这意味着“所有主机的接口”)。