java udp 断开_当eth0断开连接时,UDP多播失败

当我在连接以太网电缆的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 = 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

mcast_sock.sendto(b"Message", (ADDR, PORT))

socket.error: [Errno 99] Cannot assign requested address

使用ifconfig:

eth0 Link encap:Ethernet HWaddr b8:27:eb:13:e8:41

UP BROADCAST MULTICAST MTU:1500 Metric:1

RX packets:16716 errors:0 dropped:7224 overruns:0 frame:0

TX packets:408 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:1017246 (993.4 KiB) TX bytes:56739 (55.4 KiB)

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING MTU:65536 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1

RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

wlan0 Link encap:Ethernet HWaddr b8:27:eb:46:bd:14

inet addr:10.90.128.72 Bcast:10.90.128.255 Mask:255.255.255.0

inet6 addr: fe80::a4dd:c183:1f7a:5f43/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:58481 errors:0 dropped:41915 overruns:0 frame:0

TX packets:5196 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:12027273 (11.4 MiB) TX bytes:925411 (903.7 KiB)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值