[英]Cannot listen for UDP packets in Python- socket.error: [Errno 49] Can't assign requested address
我正在尝试侦听我通过本地网络发送的 UDP 数据包。
我曾尝试使用https://wiki.python.org/moin/UdpCommunication没有任何乐趣和许多其他教程。
我正在从 Windows 笔记本电脑发送此数据包
import socket
import time
Host = '192.168.1.7'
Port = 5050
Message = 'hello world'+time.asctime()
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
sock.sendto(Message(Host,Port)
print 'sent', Message
time.sleep(5)
我已经使用以下方法尝试接收 UDP 数据包
import socket
Host = '192.168.1.138'
Port = 5050
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((Host, 5050))
while True:
recieved = sock.recv(1024)
print recieved
和
import socket
UDP_IP = "192.168.1.138"
UDP_PORT = 5050
sock = socket.socket(socket.AF_INET,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
我已经在 localhost 上运行了以下接收方法并且工作得很好,但是一旦我在局域网上分配了设备的 IP 地址,我就会得到以下信息:
/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7 /Users/Myname/Desktop/untitled/recieve.py
Traceback (most recent call last):
File "/Users/Myname/Desktop/untitled/recieve.py", line 12, in <module>
sock.bind((UDP_IP, UDP_PORT))
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 49] Can't assign requested address
Process finished with exit code 1
我在 4 个不同的设备上测试了这个,所有设备都运行 python 2.7,这与我得到的消息相同。 它在 Windows 7 笔记本电脑、MacBook、Kali Linux 笔记本电脑和 raspberryPi 上的 PIXEL Raspbian 上运行
如果你使用socket.bind(("localhost", 80))
或socket.bind(("127.0.0.1", 80))
你仍然会有一个“服务器”套接字,但它只会在同一台机器上可见.
您可以尝试socket.bind(("", 80))
告诉套接字可以通过机器可能拥有的任何地址访问。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.