多網絡卡情況下,獲得每個網絡卡資訊

2021-07-08 09:00:42 字數 1150 閱讀 2911

//pip_adapter_info結構體指標儲存本機網絡卡資訊

ip_adapter_info* pipadapterinfo = null;

//得到結構體大小,用於getadaptersinfo引數

unsigned long stsize = 0;

//呼叫getadaptersinfo函式,填充pipadapterinfo指標變數;其中stsize引數既是乙個輸入量也是乙個輸出量

getadaptersinfo(pipadapterinfo, &stsize);

// 第一次只是獲得網絡卡數量

// pipadapterinfo = new ip_adapter_info[(stsize / sizeof(ip_adapter_info))];

// 由於結構體對齊的原因,上述**得出錯誤

pipadapterinfo = (ip_adapter_info*)new byte[stsize];

getadaptersinfo(pipadapterinfo, &stsize); // 實際獲得網絡卡資訊

一台機器上可能不只有乙個網絡卡,但每乙個網絡卡只有乙個

mac位址,而每乙個網絡卡可能配置有多個

ip位址;如平常的膝上型電腦中,就會有無線網絡卡和有線網絡卡(網線介面)兩種;因此,如果要獲得本機所有網絡卡的ip和

mac位址資訊,則必須順序獲得每個網絡卡,再依次獲取其資訊等;在

windows sdk

中,用ip_adapter_info

結構體儲存網絡卡資訊,包括網絡卡名、網絡卡描述、網絡卡

mac位址、網絡卡

ip等,該結構體的主要描述如下所示:

typedef struct

_ip_adapter_info ip_adapter_info,*pip_adapter_info;

由於可能有多個網絡卡,因此

struct _ip_adapter_info* next

欄位為乙個鍊錶結構指標,由於乙個網絡卡可能有多個

ip,因此

ip_addr_string

字段應該也是乙個鍊錶結構,其資訊如下所示:

typedef struct

_ip_addr_string

ip_addr_string;

雙網絡卡或多網絡卡情況下獲得所有的IP位址

在編寫基於sock的網路程式時,有時需列舉系統中繫結的所有ip位址,在一般控制項無法解決些問題的情況下,可使用如下方法一試 include stdafx.h include include include include void main gethostname myname,80 取得主機名 t...

多網絡卡存在情況下獲取指定網絡卡的MAC位址

應用軟體中經常有需要顯示mac位址的功能,方便使用者判斷當前聯網狀態,如果是在多網絡卡存在 無線,有線等 下,網路會經常切換,獲取到的mac位址可能與預期不同,現給出指定網絡卡獲取mac位址的方法。void get mac mac address mac address wlan0代表網絡卡的名字 ...

Linux多網絡卡情況下虛擬IP快速生效的方法

物理環境 雙機 多網絡卡 其中乙個網絡卡繫結2個ip 帶arp快取的交換機 問題 主備切換後,虛擬ip繫結成功,但外面不能ping同虛擬ip,也就是虛擬ip不能快速生效 注意 如果使用普通的二層交換機,則不存在該問題,因為普通交換機沒有arp快取。當然,通過調整交換機上的arp快取失效時間,可以緩解...