gpt4 book ai didi

java - Raspberry Pi 路由器上的组播

转载 作者:太空宇宙 更新时间:2023-11-04 05:19:40 28 4
gpt4 key购买 nike

我正在尝试设置一个程序,通过本地网络传输我的网络摄像头,但遇到了一些问题。我用 C++ 编写了一个程序,它使用 OpenCV 从网络摄像头捕获图像,然后获取字节并使用多播将其转换到 IP。然后我有一个 Java 程序来监听这个 IP 地址。

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

在 C++ 程序中,我使用 sys/socket.h 中的“sendto”发送数据,它返回 -1 并出现错误网络无法访问。当我尝试使用java程序监听IP时,出现以下错误。

Exception in thread "main" java.net.SocketException: No such device at java.net.PlainDatagramSocketImpl.join(Native Method) at java.net.AbstractPlainDatagramSocketImpl.join(AbstractPlainDatagramSocketImpl.java:178) at java.net.MulticastSocket.joinGroup(MulticastSocket.java:323) at MulticastImageReciever.(MulticastImageReciever.java:29) at MulticastImageReciever.main(MulticastImageReciever.java:118)

如果需要,我可以发布我编写的程序,但由于它可以在其他网络上运行,所以我认为这不是问题。对于如何解决这个问题,有任何的建议吗?

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

感谢您的帮助!

最佳答案

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

首先,由于我使用 Raspberry Pi 作为路由器,因此我必须从 any interface to my wireless interface 路由多播数据包。 。就我而言,我在 pi 上运行了 route add –net 224.0.0.0 netmask 240.0.0.0 gw wlan0。这允许路由器使用 IGMP。

二、2.6以后的Linux内核replying to broadcast/multicast is disabled by default 。要更改此echo "0">/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

关于java - Raspberry Pi 路由器上的组播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43460553/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com