如何绑定boost udp套接字到特定的接口
How to bind boost udp socket to specific interface
我已经实现了一个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/C++Unix
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 如何在C/C++中用FD_set Unix设置套接字文件描述符
- 套接字读取后,我在缓冲区中看到意外输入
- 如何在CPP中创建应该在Windows和Linux上运行的套接字?
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- 套接字连接"Operation not permitted"错误,甚至使用升压/平发器根.cpp
- 在C ++ ASIO中,如何为HTTP或HTTPS创建相同的套接字对象(接口/抽象问题?
- Asio如何包含基于BSD套接字API的低级套接字接口
- 使用 Boost.Asio 将 UDP 套接字绑定到特定网络接口
- 网络:当接口打开/关闭时,在所有接口上绑定套接字
- 将套接字绑定到具有未知 IP 的特定接口
- 提升 ASIO 有状态套接字接口
- 单套接字通过 WLAN 和 ETH 接口发送和接收
- 如何确定 Linux 套接字在C++中绑定到哪些接口
- 如何绑定boost udp套接字到特定的接口
- 使用c++ TCP客户端套接字在特定的网络接口Linux/Unix
- boost::asio与标准C套接字接口之间的合作
- 实现套接字接口支持IPV6和IPV4的最佳方式