gpt4 book ai didi

c++ - 如何将boost udp套接字绑定(bind)到特定接口(interface)

转载 作者:太空宇宙 更新时间:2023-11-04 13:47:47 25 4
gpt4 key购买 nike

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

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

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

我尝试将套接字绑定(bind)到本地地址,但没有成功。

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

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));

最佳答案

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

关于c++ - 如何将boost udp套接字绑定(bind)到特定接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25038591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com