【问题标题】:How to bind boost udp socket to specific interface如何将boost udp套接字绑定到特定接口
【发布时间】:2014-07-30 13:49:26
【问题描述】:

我已经实现了一个 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));

【问题讨论】:

    标签: c++ sockets boost boost-asio


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-10-23
      • 2019-09-05
      • 2011-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-31
      • 2023-02-12
      • 1970-01-01
      相关资源
      最近更新 更多