boost asio指定網絡卡加入多播組

2021-06-20 05:14:04 字數 933 閱讀 2207

有兩塊網絡卡,要指定加入特定網絡卡的多播組。看了一下boost asio文件,例子中沒有指定網絡卡:

boost::asio::ip::udp::socket socket(io_service); 

...boost::asio::ip::address multicast_address =

boost::asio::ip::address::from_string("225.0.0.1");

boost::asio::ip::multicast::join_group option(multicast_address);

socket.set_option(option);

再看源程式asio/ip/multicast.hpp, join_group是個型別定義

#if defined(generating_documentation)

typedef implementation_defined join_group;

#else

typedef boost::asio::ip::detail::socket_option::multicast_request<

ipproto_ip, ip_add_membership, ipproto_ipv6, ipv6_join_group> join_group;

#endif

找到asio/ip/detail/socket_option.hpp,發現multicast_request類有成員函式

// helper template for implementing ip_mreq-based options.

template 

class multicast_request

一切搞定,指定network_inte***ce就可以了。(在linux上)另外需要確保防火牆關閉,組播路由配置好。

看來asio的文件還是不夠詳細。

多網絡卡指定網絡卡傳送資料

環境 2個網絡卡,分別在不同網路環境。區域網一 閘道器 10.9.16.254 區域網二 閘道器 10.9.24.1 電腦位址2 10.9.24.88 如下 include stdafx.h include include pragma comment lib,ws2 32.lib includev...

多網絡卡指定網絡卡傳送資料

環境 2個網絡卡,分別在不同網路環境。區域網一 閘道器 10.9.16.254 區域網二 閘道器 10.9.24.1 電腦位址2 10.9.24.88 如下 include stdafx.h include include pragma comment lib,ws2 32.lib include ...

指定網絡卡,socket傳送

我們在可程式設計路由器上的openwrt 基於linux 做資料 路由器有兩個資料出口,做冗餘傳送。可以該命令檢視本地路由器表 route n多層結構,即資料出口外還有路由器裝置提供上層的資料出口,資料目的位址不是當前網段 因此,需要將socket與網絡卡進行繫結傳送資料 使用libpcap的 pc...