python udp广播发送但不接收

python udp广播发送但不接收,python,opencv,sockets,udp,broadcast,Python,Opencv,Sockets,Udp,Broadcast,我正在尝试一个基本的脚本,应该在以后进行定制,但现在我需要它从一个连接了raspberry Pi的网络向同一网络上的多台笔记本电脑发送一个摄像头提要 我使用udp流传输到具有特定设备地址的单个设备,并以下面的代码作为示例,它工作起来像一个魔咒,没有任何问题 发送方 class FrameSegment(): “”“此类初始化主文件中的套接字,然后使用udp_frame方法在循环中发送视频帧”“” 最大镜像内存=2**16-64减去64字节,以防UDP帧溢出 def _u初始(自身,端口=5000

我正在尝试一个基本的脚本,应该在以后进行定制,但现在我需要它从一个连接了raspberry Pi的网络向同一网络上的多台笔记本电脑发送一个摄像头提要

我使用udp流传输到具有特定设备地址的单个设备,并以下面的代码作为示例,它工作起来像一个魔咒,没有任何问题

发送方

class FrameSegment():
“”“此类初始化主文件中的套接字,然后使用udp_frame方法在循环中发送视频帧”“”
最大镜像内存=2**16-64减去64字节,以防UDP帧溢出
def _u初始(自身,端口=5000):
self.s=socket.socket(socket.AF_INET、socket.SOCK_DGRAM、socket.IPPROTO_UDP)
self.s.setsockopt(socket.solu_socket,socket.SO_REUSEADDR,1)#对于linux,使用SO_REUSEPORT
self.s.setsockopt(socket.SOL_socket,socket.SO_广播,1)
self.s.settimeout(0.2)
self.PORT=端口
def udp_帧(自身、img):
压缩\u img=cv2.imencode(“.jpg”,img)[1]
dat=压缩\u img.tostring()
尺寸=长度(dat)
segments的数量=math.ceil(size/(self.MAX_IMAGE_DGRAM))
数组位置开始=0
而\u段的数量\u:
阵列位置结束=最小值(大小、阵列位置开始+自最大图像)
msg=struct.pack(“B”,段数)+dat[数组位置开始:数组位置结束]
self.s.sendto(msg,('192.168.1.110',self.PORT))
阵列位置开始=阵列位置结束
_段的数量-=1
接收器

class-RovCam():
“”“初始化主套接字,然后以循环方式从所述套接字读取传输的数据,以显示视频”“”
最大内存=2**16-16
def _u初始(自身,端口=5000):
self.s=socket.socket(socket.AF_INET、socket.SOCK_DGRAM、socket.IPPROTO_UDP)
self.s.setsockopt(socket.solu_socket,socket.SO_REUSEADDR,1)#对于linux,使用SO_REUSEPORT
self.s.setsockopt(socket.SOL_socket,socket.SO_广播,1)
self.s.bind((“”,端口))
self.dat=b''
self.dump_buffer()
打印(“遥控潜水器凸轮:连接成功”)
def转储_缓冲区(自):
尽管如此:
seg,addr=self.s.recvfrom(self.maxdgram)
如果结构解包(“B”,分段[0:1])[0]==1:
打破
def读取(自):
seg,addr=self.s.recvfrom(self.maxdgram)
而结构解包(“B”,段[0:1])[0]>1:
self.dat+=seg[1:]
seg,addr=self.s.recvfrom(self.maxdgram)
self.dat+=seg[1:]
img=cv2.imdecode(np.fromstring(self.dat,dtype=np.uint8),1)
self.dat=b''
返回img
然而,问题是,如果我将接收设备的地址更改为这样的广播地址 **在发送方文件中**

self.s.sendto(msg,('192.168.1.255',self.PORT)) 它停止工作,接收设备无法读取任何内容


然后,我用tcpdump工具确认接收设备确实通过指定端口接收发送的流,但脚本很难看到这一点。

结果表明这是一个网络错误,当我将路由器从网络中移除,并在其中一个端口上创建了一个较小的网络,其中只有一个交换机和一个板载DHCP服务器它使用的设备成功地处理了连接