簡體   English   中英

如何將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));

我認為應該通過系統路由級別解決此問題,因為套接字是不直接綁定到網絡設備的更高級別。因此,解決此問題的方法-路由優先級和操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM