• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

树莓派路由器上的多点传送

java 来源:Jonathon Gardner 9次浏览

我想设置一个程序,通过本地网络传输我的摄像头,但我遇到了一些问题。我用C++编写了一个程序,它使用OpenCV从我的摄像头捕捉图像,然后获取字节并使用多播将它转换为IP。然后我有一个Java程序监听这个IP地址。树莓派路由器上的多点传送

在我的路由器创建的通常网络上,一切正常,我可以将我的摄像头流式传输到多台计算机上。问题是,我将Raspberry Pi设置为路由器(使用此link),并且每当我在网络上创建树莓派时,我都无法组播。

在C++程序中,我使用sys/socket.h中的“sendto”来发送数据,它返回-1,错误号为Network is unreachable。当我尝试使用Java程序来侦听IP时,出现以下错误。

异常在线程 “主” java.net.SocketException异常:在 java.net.PlainDatagramSocketImpl.join(本机方法)在 java.net.AbstractPlainDatagramSocketImpl.join(AbstractPlainDatagramSocketImpl.java:178)没有这样的设备 在java.net.MulticastSocket.joinGroup(MulticastSocket.java:323)在 MulticastImageReciever。(MulticastImageReciever.java:29)在 MulticastImageReciever.main(MulticastImageReciever.java:118)

我可以张贴程序我写了如果需要,但因为它在另一个网络上工作奥克我不认为这是问题。对于如何解决这个问题,有任何的建议吗?

我一直能找到的唯一帮助是link,它说使用多播的一个常见问题是TTL被设置为1,但是这是由发送者设置的,是正确的吗?如果是这样,这应该不是问题,因为我在两个网络上使用同一台计算机。

感谢您的帮助!


===========解决方案如下:

如果有人在提交的帮助下遇到类似的问题,我找到了解决方案。

首先,由于我使用Raspberry Pi作为路由器,因此必须路由来自any interface to my wireless interface的多播数据包。在我的例子中,我跑了route add –net 224.0.0.0 netmask 240.0.0.0 gw wlan0。这允许路由器使用IGMP。二,Linux内核2.6之后replying to broadcast/multicast is disabled by default。改变这个echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)