用python建立UDP通信

用python建立UDP通信,python,networking,udp,communication,packet,Python,Networking,Udp,Communication,Packet,我这里有这个代码。此发件人脚本正确地为我提供了输出 导入套接字 UDP_IP=“127.0.0.1” UDP_端口=0 MESSAGE=“嗨,你能听听这个吗?” 打印“UDP目标IP:”,UDP_IP 打印“UDP目标端口:”,UDP_端口 打印“消息:”,消息 sock=socket.socket(socket.AF#INET,#Internet socket.SOCK(内存)#UDP sock.sendto(MESSAGE,(UDP_IP,UDP_PORT))发送消息时使用特定端口,例如U

我这里有这个代码。此发件人脚本正确地为我提供了输出

导入套接字
UDP_IP=“127.0.0.1”
UDP_端口=0
MESSAGE=“嗨,你能听听这个吗?”
打印“UDP目标IP:”,UDP_IP
打印“UDP目标端口:”,UDP_端口
打印“消息:”,消息
sock=socket.socket(socket.AF#INET,#Internet
socket.SOCK(内存)#UDP

sock.sendto(MESSAGE,(UDP_IP,UDP_PORT))
发送消息时使用特定端口,例如
UDP_PORT=8765
,否则如果
UDP_PORT
设置为0,则系统将为您选择一个随机端口

在发送方脚本中使用接收方主机的ip地址,并绑定到接收方脚本上的任何接口

在接收端,使用发送方脚本中配置的相同UDP端口号

接收人:

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
发件人:

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))
这通常源于试图绑定到对本地计算机无效的地址:因此,您的计算机上似乎没有配置环回地址127.0.0.1


在系统管理端进行调查,例如,检查您的计算机上是否启用了IPv4网络堆栈。

Ahh。。我还尝试在两侧使用特定的端口号,添加实际的ip地址,而不是0.0.0.0。没有起作用。那么这0.0.0.0是为了什么?类似于侦听所有地址的开放端口?对于约定,0.0.0.0表示本地计算机上的所有ip地址,因此您的套接字侦听所有网络接口上的传入消息。好的,谢谢。:)欢迎加入!别忘了接受这个答案,它对你有用。所以,现在我有另一个问题。我读到,为了将数据作为UDP的有效负载发送,我需要考虑以太网、IPv4或V6以及随后的UDP的报头。那么在上面的示例中,是否考虑了以太网和ipv?因为源和端口已分配,但我不知道是否考虑了以太网或internet以及ipv4或v6的报头,因为udp报头也有一个2字节的源和目标端口)。任何人都可以分享这样的项目的例子,以便更好地理解吗?或者请你解释一下。。
[Errno 10049] The requested address is not valid in its context