断开eth0连接时UDP多播失败
当我在Raspberry Pi 3上运行此代码段时,以太网电缆已连接,它可以工作并通过UDP多播发送消息,但当以太网断开连接时,如果出现错误消息断开eth0连接时UDP多播失败,udp,localhost,multicast,loopback,Udp,Localhost,Multicast,Loopback,当我在Raspberry Pi 3上运行此代码段时,以太网电缆已连接,它可以工作并通过UDP多播发送消息,但当以太网断开连接时,如果出现错误消息 import socket from socket import IPPROTO_IPV6 import struct PORT = 26000 ADDR = 'ff01::1' #IPV6 Multicast Address addrInfo = socket.getaddrinfo(ADDR, None)[0] mcast_sock = soc
import socket
from socket import IPPROTO_IPV6
import struct
PORT = 26000
ADDR = 'ff01::1' #IPV6 Multicast Address
addrInfo = socket.getaddrinfo(ADDR, None)[0]
mcast_sock = socket.socket(addrInfo[0], socket.SOCK_DGRAM)
mcast_sock.setsockopt(IPPROTO_IPV6, socket.IPV6_MULTICAST_HOPS, 1)
mcast_sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
mcast_sock.bind(('', PORT))
#Join Multicast grp.
group = socket.inet_pton(addrInfo[0], addrInfo[4][0])
mreq = group + struct.pack('@I', 0)
mcast_sock.setsockopt(IPPROTO_IPV6, socket.IPV6_JOIN_GROUP, mreq)
mcast_sock.sendto(b"Message", (ADDR, PORT))
仅Wlan0接口启动时的错误消息
Traceback (most recent call last):
File "test.py", line 20, in <module>
mcast_sock.sendto(b"Message", (ADDR, PORT))
socket.error: [Errno 99] Cannot assign requested address
似乎本地路由支持eth0而不是wlan0
ip -6 route show table local
local ::1 dev lo proto kernel metric 256
local ::1 dev lo proto none metric 0
local fe80::a4dd:c183:1f7a:5f43 dev lo proto none metric 0
ff00::/8 dev eth0 metric 256
ff00::/8 dev wlan0 metric 256
找到了这个解决方案
因此,我运行了以下命令:
ip -6 route add ff01::/16 dev lo table local
然后它就起作用了:)
ip -6 route add ff01::/16 dev lo table local