正在与 python 建立 UDP 通信

Establishing UDP communication with python

所以,我这里有这段代码。这个发件人脚本给了我正确的输出。

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

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

发送消息时使用特定端口,例如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))

除了 UDP 地址设置之外,python 方面没有任何问题。

关于错误:

[Errno 10049] The requested address is not valid in its context

这通常源于尝试绑定到对本地计算机无效的地址:因此您的计算机上似乎没有配置环回地址 127.0.0.1。

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