相关疑难解决方法(0)

绑定多播(UDP)套接字是什么意思?

我在具有多个网络接口的主机之间使用多播UDP.我正在使用boost :: asio,并且被接收器必须进行的2个操作混淆:bind,然后是join-group.

当您对加入的每个组播组执行此操作时,为什么需要在绑定期间指定接口的本地地址?

姐妹问题是关于多播端口:因为在发送期间,您发送到多播地址和端口,为什么在订阅多播组期间,您只需指定地址,而不是端口 - 在混乱的呼叫中指定的端口绑定.

注意:"join-group"是一个包装器setsockopt(IP_ADD_MEMBERSHIP),如文档所示,可以在同一个套接字上多次调用以订阅不同的组(通过不同的网络?).因此,每次订阅组时,抛弃绑定调用并指定端口是完全合理的.

从我所看到的,总是绑定到"0.0.0.0"并在加入组时指定接口地址,效果非常好.困惑.

sockets udp bind multicast boost-asio

65
推荐指数
4
解决办法
10万
查看次数

boost :: asio :: ip :: multicast :: join_group不起作用

我试过这个 例子,但它不起作用.显然它没有设置IPPROTO_IP/IP_MULTICAST_IF选项.我只能为IPPROTO_IP/IP_MULTICAST_IF找到boost :: asio :: ip :: multicast :: outbound_interface,我试过但失败了.有没有办法让boost :: asio :: ip :: multicast工作而不需要调用c-level setsockopt?

boost::asio::ip::udp::endpoint listen_endpoint(
    listen_address, multicast_port);
socket_.open(listen_endpoint.protocol());
socket_.set_option(boost::asio::ip::udp::socket::reuse_address(true));
socket_.bind(listen_endpoint);

// Join the multicast group.
socket_.set_option(
    boost::asio::ip::multicast::join_group(multicast_address));
Run Code Online (Sandbox Code Playgroud)

c++ boost-asio

9
推荐指数
2
解决办法
5789
查看次数

标签 统计

boost-asio ×2

bind ×1

c++ ×1

multicast ×1

sockets ×1

udp ×1