socket.error:[Errno 49]无法分配请求的地址
我正在尝试使用udp构建一个dns消息。但是,我的套接字连接似乎不适用于UDP。我无法绑定并使用相同的套接字发送。这是预期的行为吗?
我认为这会有效,因为我在这里看到它: https://github.com/rthalley/dnspython/blob/master/dns/query.py#L213-L215
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)
答案 0 :(得分:2)
source_address = ('127.0.0.1', 20202)
您正试图从您的环回设备发送。你不能这样做,它只在你的机器本地。使用您的一个外部IP地址,或将您的套接字绑定到通配符地址0.0.0.0
。