首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增强asio多播加入

问增强asio多播加入
EN

Stack Overflow用户
提问于 2016-07-19 11:18:06
回答 1查看 955关注 0票数 0

我在使用boost::asio的程序中犯了一个错误,当接收多播数据时,它绑定到多播地址,而不是本地接口ip。没有错误。不知何故,在多宿主linux主机上,它仍然接收多播数据。但是当我在另一个多主机器上运行时,它不能。这是做什么的?

代码语言:javascript
复制
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 ) );
EN

回答 1

Stack Overflow用户

发布于 2016-07-19 13:12:23

listen_endpoint应该绑定到本地接收器端点的地址,即使用哪个网络接口。将其设置为any()可让boost使用默认接收器,例如:

代码语言:javascript
复制
boost::asio::ip::udp::endpoint listen_endpoint
    ( boost::asio::ip::address_v4::any(), multicast_port );

按照最后一行,multicast_address应该只用于加入多播组。

这里有一些关于它的有用信息:Are you ready for IPV6?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38449028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档