UDP 套接字 sendto() 函数
UDP socket sendto() functions
如果我想像这样在我的 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
您的绑定调用不应绑定到环回地址。尝试这样做:
udp_server.bind(('0.0.0.0', udp_port))
客户:
sock_client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock_client.sendto("message", ("127.0.0.1", 4444))
服务器:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(("127.0.0.1", 4444))
while(1):
data, addr = sock.recvfrom(1024)
print "received:", data
此代码有效。 Python-2.7.
您似乎混合了客户端和服务器套接字、地址或子网。
错误提示您的参数无效。阅读您的代码时,我可以说有问题的参数是 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
.
如果我想像这样在我的 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
您的绑定调用不应绑定到环回地址。尝试这样做:
udp_server.bind(('0.0.0.0', udp_port))
客户:
sock_client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock_client.sendto("message", ("127.0.0.1", 4444))
服务器:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(("127.0.0.1", 4444))
while(1):
data, addr = sock.recvfrom(1024)
print "received:", data
此代码有效。 Python-2.7.
您似乎混合了客户端和服务器套接字、地址或子网。
错误提示您的参数无效。阅读您的代码时,我可以说有问题的参数是 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
.