正在与 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 网络堆栈。
所以,我这里有这段代码。这个发件人脚本给了我正确的输出。
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 网络堆栈。