用python建立UDP通信

时间:2018-05-07 15:14:43

标签: python networking udp communication packet

所以,我在这里有这个代码。此发件人脚本可以正确地输出输出。



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;
&#13;
&#13;

我在发件人脚本上使用接收器的IP地址,在接收器上使用发件人 IP地址 我确定我使用 UDP_PORT 时出错,所以我使用了 PORT = 0并尝试了。如何申请港口号码?如何建立连接?如果不是港口,我哪里出错?

1 个答案:

答案 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网络堆栈。