多網絡卡傳送資料報

2021-08-30 20:13:17 字數 571 閱讀 1993

方法一:使用libnet,這裡就不介紹了。

方法二:使用原始套接字

指定網絡卡傳送資料的時候不需要指定網絡卡ip,只要設定struct ifreg ifr.ifr_name就可以了。

例如:

struct ifreq ifr;

fd = socket(pf_packet, sock_raw, htons(eth_p_all));

memset(&ifr, 0, sizeof (ifr));

strncpy(ifr.ifr_name, "eth0", sizeof (ifr.ifr_name) -1);

ifr.ifr_name[sizeof(ifr.ifr_name) - 1] = '\0';

if (ioctl(fd, siocgifhwaddr, &ifr) < 0 )

方法三:bind的時候設定不同網絡卡的ip

這種情況適用於執行server端操作,為套接字繫結不同的介面ip,可以接受不同網路[不同isp]的資料報。

在雙線接入主機中,可以使用這種方法來編寫程式,來響應不同介面的資料報,而且反應快。

網絡卡傳送與接收資料報

網絡卡如何傳送資料報 ip報文可以看作乙個包。linux網絡卡驅動程式,將ip包新增14位元組的mac包頭,構成mac包。mac包中含有傳送端和接收端的mac位址資訊。既然是驅動程式建立的mac包頭資訊,當然可以隨便輸入位址資訊的。主機偽裝就是這麼實現的。驅動程式將mac包拷貝到網絡卡晶元內部的緩衝...

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

環境 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 ...