提升asio多播加入
boost asio multicast join
我在使用boost::asio的程序中犯了一个错误,因为当接收多播数据时,它绑定到多播地址,而不是本地接口ip。没有错误。不知怎的,在多家庭linux主机上,它仍然接收到多播数据。但当我在另一个多家庭盒子上运行时,它无法运行。这做了什么?
boost::asio::ip::address multicast_address( boost::asio::ip::address::from_string( "239.1.1.100" ) );
unsigned port( 12345 );
boost::asio::io_service io;
boost::asio::ip::udp::socket socket;
boost::asio::ip::udp::endpoint listen_endpoint( multicast_address, multicast_port );
socket.open( listen_endpoint.protocol() );
socket.set_option( boost::asio::ip::udp::socket::reuse_address( true ) );
socket.bind( listen_endpoint );
socket.set_option( boost::asio::ip::multicast::join_group( multicast_address ) );
listen_endpoint
应绑定到本地接收方端点的地址,即使用哪个网络接口。将其设置为any()
可使boost
使用默认接收器,例如:
boost::asio::ip::udp::endpoint listen_endpoint
( boost::asio::ip::address_v4::any(), multicast_port );
multicast_address
应该只用于加入多播组,如最后一行所示。
这里有一些有用的信息:你准备好使用IPV6了吗?
相关文章:
- 如何使用虚幻引擎"filter"多播?
- 无法在 Windows 10 上加入 IPV6 多播组
- 如何在 Linux 上的 C/C++ 中使用 ipv6 udp 套接字进行多播?
- IPv6 多播在局域网中不起作用
- 简单的多播应用程序无法在同一网络上的不同计算机上运行
- Linux VS Windows 上的 UDP 多播差异
- 在覆盆子Pi路由器上进行多播
- C 在特定接口上接收多播
- 为什么Zeromq PGM多播未接收多播消息?(C ,Windows)
- Ubuntu C 多播双休假组消息
- 如何从已经订阅的组中接收多播数据包
- 我是否需要2个插座来进行多播和单播
- 使用 Boost ASIO 在 macOS 上到特定接口的多播
- 如何正确接收多播UDP数据包
- BOOST :: ASIO多播示例
- OSX上的Boost ASIO多播失败
- Boost.Asio 在尝试加入多播组时引发'No such device'异常
- Boost::Asio多播侦听地址
- 使用boost::asio在同一主机上发送多播消息
- 提升asio多播加入