[英]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));
我認為應該通過系統路由級別解決此問題,因為套接字是不直接綁定到網絡設備的更高級別。因此,解決此問題的方法-路由優先級和操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.