所以,我在这里有这个代码。此发件人脚本可以正确地输出输出。
import socket
UDP_IP = "127.0.0.1"
UDP_PORT = 0
MESSAGE = "Hi, can you listen to this?"
print "UDP target IP:", UDP_IP
print "UDP target port:", UDP_PORT
print "message:", MESSAGE
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))

我尝试在另一台主机上使用此脚本,并尝试在两者之间建立通信。 (两个系统都在同一网络上,例如00.000.00.xxx,只有xxx部分不同)
import socket
UDP_IP = "127.0.0.1"
UDP_PORT = 0
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))
while True:
data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
print "received message:", data

这是输出
Traceback (most recent call last):
File "C:/Users/bshivaku/Desktop/SEnd_Udp_packets.py", line 9, in <module>
sock.bind((UDP_IP, UDP_PORT))
File "C:\Python27\Lib\socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 10049] The requested address is not valid in its context
&#13;
我在发件人脚本上使用接收器的IP地址,在接收器上使用发件人 IP地址 我确定我使用 UDP_PORT 时出错,所以我使用了 PORT = 0并尝试了。如何申请港口号码?如何建立连接?如果不是港口,我哪里出错?
答案 0 :(得分:0)
发送消息时使用特定端口,例如UDP_PORT
,否则如果import socket
UDP_IP = "0.0.0.0"
UDP_PORT = 8543
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))
while True:
data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
print "received message:", data
设置为0,系统将为您选择一个随机端口。
在发件人脚本中使用接收者主机的IP地址,并绑定到接收者脚本上的任何接口。
在接收方使用发件人脚本中配置的相同UDP端口号。
接收器:
import socket
UDP_IP = "<ip_address_of_receiver>"
UDP_PORT = 8543
MESSAGE = "Hi, can you listen to this?"
print "UDP target IP:", UDP_IP
print "UDP target port:", UDP_PORT
print "message:", MESSAGE
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))
发件人:
[Errno 10049] The requested address is not valid in its context
除UDP地址设置外,python端没有任何问题。
关于错误:
{{1}}
这通常源于尝试绑定到对本地计算机无效的地址:因此,似乎环回地址127.0.0.1未在您的计算机上配置。
调查系统管理员方面,例如检查您的计算机上是否启用了IPv4网络堆栈。