如果我想这样在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 = {}
错误:
udp_server.sendto('', ('192.0.0.1', 14550) )
socket.error: [Errno 22] Invalid argument
您的绑定调用不应绑定到环回地址。尝试这样做:
错误说明您的参数无效。在阅读您的代码时,我可以说有问题的参数是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
。客户:
服务器:
这个代码有效。Python-2.7版本。
似乎您混合了客户机和服务器套接字、地址或子网络。
相关问题 更多 >
编程相关推荐