首页 文章

如何将boost udp socket绑定到特定接口

提问于
浏览
1

我已经实现了一个boost多播UDP监听器 .

我希望它从发送多播数据包的无线设备接收消息 .

如果我运行我的进程,当以太网电缆断开时,我会收到数据包 . 但是,如果我在连接以太网电缆时启动该过程(因此有2个接口可用),我不会收到数据包 .

我试图将套接字绑定到本地地址,但这不起作用 .

这是我的代码的一部分 . 如果您需要更多,请告诉我 .

boost::asio::io_service ioService();
boost::asio::ip::udp::endpoint multicastEP(multicastAddress, multicastPort);
boost::asio::ip::udp::endpoint localEP(localAddress, multicastPort);
boost::asio::ip::udp::socket socket(ioService, localEP.protocol());

socket.set_option(boost::asio::ip::udp::socket::reuse_address(true));
socket.set_option( boost::asio::ip::multicast::enable_loopback(true));
socket.set_option(boost::asio::ip::multicast::join_group(multicastEP.address()));

socket.bind(boost::asio::ip::udp::endpoint(boost::asio::ip::address_v4::any(), multicastPort));

1 回答

  • 0

    我相信这应该通过系统路由级别来解决,因为套接字是一个没有直接绑定到网络设备的上层...所以解决它的方法 - 路由优先级和操作 .

相关问题