该代码用于创建客户端UDP套接字。我不知道什么是错的。
# UDPPingerClient.py
from socket import *
serverName = '';
serverPort = 12000;
clientSocket = socket(AF_INET, SOCK_DGRAM)
message = raw_input("Input message:")
clientSocket.sendto(message,(serverName,serverPort))
modifiedMessage, serverAddress = clientSocket.recvfrom(1024)
print(modifiedMessage)
print(serverAddress)
clientSocket.close()
第12行的Errno 10049
答案 0 :(得分:0)
我猜您使用的是基于错误编号的Windows,根据Microsoft,Errno 10049如下:
无法分配请求的地址。 请求的地址在其上下文中无效。这通常是由于尝试绑定到对本地计算机无效的地址。当远程地址或端口对远程计算机无效时(例如,地址或端口0),这也可能由connect,sendto,WSAConnect,WSAJoinLeaf或WSASendTo产生。
尝试使用相同的套接字发送和接收可能导致这种情况。因此,您需要创建两个套接字,一个用于接收,另一个用于发送信息。
答案 1 :(得分:0)
MSDN:
WSAEADDRNOTAVAIL 10049 无法分配请求的地址。
请求的地址在其上下文中无效。这通常是由于尝试绑定到无效的地址 本地电脑。这也可能来自
connect
,sendto
, 远程地址或端口时WSAConnect
,WSAJoinLeaf
或WSASendTo
对远程计算机无效(例如,地址或端口0)。
这是因为您尝试使用空sendto
来呼叫serverName
。使用有效地址,例如'example.com'
,'127.0.0.1'
,'0.0.0.0'
,它会有效。
当您在新套接字上调用sendto
时,它首先尝试将服务器地址和端口转换为可由系统API使用的演示文稿。空字符串不是有效地址,您会收到错误。