Python UDP套接字。 blind()+ sendto()错误

时间:2014-02-23 03:40:02

标签: python sockets udp

socket.error:[Errno 49]无法分配请求的地址

我正在尝试使用udp构建一个dns消息。但是,我的套接字连接似乎不适用于UDP。我无法绑定并使用相同的套接字发送。这是预期的行为吗?

我认为这会有效,因为我在这里看到它: https://github.com/rthalley/dnspython/blob/master/dns/query.py#L213-L215

UDP.py

import socket

source_address = ('127.0.0.1', 20202)
destination_address = ('8.8.8.8', 53)
data = "Hello, World!"

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)

s.bind(source_address)
print 'Sending UDP to {}'.format(destination_address)
s.sendto(data, destination_address)

# listen for response with s.recvfrom(16384)

1 个答案:

答案 0 :(得分:2)

source_address = ('127.0.0.1', 20202)

您正试图从您的环回设备发送。你不能这样做,它只在你的机器本地。使用您的一个外部IP地址,或将您的套接字绑定到通配符地址0.0.0.0