UDP套接字sendto()函数

dgr*_*rat 3 python sockets sendto

如果我想在我的udp套接字上写这样的话,我会收到错误.根据文件,应该没有问题.我不明白为什么bind()以相同的方式运行良好但sendto()失败.

udp_port = 14550
udp_server  = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_server.bind(('127.0.0.1', udp_port))
udp_clients = {}
Run Code Online (Sandbox Code Playgroud)

错误:

udp_server.sendto('', ('192.0.0.1', 14550) )
socket.error: [Errno 22] Invalid argument
Run Code Online (Sandbox Code Playgroud)

Ser*_*sta 6

错误表明您的参数无效.在阅读您的代码时,我可以说违规的参数是IP地址:

  • 你将套接字绑定到 127.0.0.1
  • 您尝试将数据发送到192.0.0.1这是另一个网络上

如果要将数据发送到IP地址的主机192.0.0.1,请将套接字绑定到同一网络上的本地网络接口,或者绑定到可以找到路由的网络192.0.0.1

我有一个(私有)本地网络192.168.56.*,如果我将套接字绑定到192.168.56.x(x是本地地址),我可以发送数据192.168.56.y(y是服务器的地址); 但如果我绑定127.0.0.1我就得到了IllegalArgumentException.