使用GetIpAddrTable管理IP位址

2021-09-30 05:07:27 字數 2162 閱讀 7006

getipaddrtable函式返回與系統關聯的ip位址資訊,填充乙個mib_ipaddrtable結構指標。

使用getipaddrtable

1.宣告乙個mib_ipaddrtable結構指標pipaddrtable,乙個dword變數dwsize。這些變數作為引數傳遞給getipaddrtable函式。定義乙個dword變數dwretval(用於檢錯)。

mib_ipaddrtable *pipaddrtable;

dword            dwsize = 0;

dword            dwretval;

2.為結構分配記憶體。

注:dwsize指定的大小不足以緩衝資料,參看下一步。

pipaddrtable = (mib_ipaddrtable*) malloc( sizeof(mib_ipaddrtable) );

3.進行第一次getipaddrtable呼叫獲取適當的dwsize變數大小。

注:這是有意的失敗呼叫,用以確定足夠的dwsize緩衝區大小,以緩衝返回至pipaddrtable的所有資料。這種方法是此類結構和函式的常用程式設計模式。

if (getipaddrtable(pipaddrtable, &dwsize, 0) == error_insufficient_buffer)

4.進行第二次getipaddrtable呼叫並使用一般的錯誤檢查,錯誤資訊返回至dword變數dwretval,用於更多高階的錯誤檢查。

if ( (dwretval = getipaddrtable( pipaddrtable, &dwsize, 0 )) != no_error )

5.如果呼叫成功,通過pipaddrtable結構訪問資料。

printf("ip address:         %ld/n", pipaddrtable->table[0].dwaddr);

printf("ip mask:            %ld/n", pipaddrtable->table[0].dwmask);

printf("if index:           %ld/n", pipaddrtable->table[0].dwindex);

printf("broadcast addr:     %ld/n", pipaddrtable->table[0].dwbcastaddr);

printf("re-assembly size:   %ld/n", pipaddrtable->table[0].dwreasmsize);

6.釋放為pipaddrtable結構分配的記憶體。

if (pipaddrtable)

free(pipaddrtable);

注:dword變數dwaddr和dwmask返回的是本機位元組序的數字值,不是網路位元組序,這些值不是帶點的ip位址。

//呼叫getipaddrtable示例**:修改自msdn。

//在vc++2008下編譯通過。/花指令 點。點。記事本

#pragma comment(lib, "iphlpapi.lib")

#include

#include

#include

int main()

if ( (dwretval = getipaddrtable( pipaddrtable, &dwsize, 0 )) != no_error )

printf("ip address:         %ld/n", pipaddrtable->table[0].dwaddr);

printf("ip mask:            %ld/n", pipaddrtable->table[0].dwmask);

printf("if index:           %ld/n", pipaddrtable->table[0].dwindex);

printf("broadcast addr:     %ld/n", pipaddrtable->table[0].dwbcastaddr);

printf("re-assembly size:   %ld/n", pipaddrtable->table[0].dwreasmsize);

if (pipaddrtable)

free(pipaddrtable);

return 0;

}

使用GraphEdit使用

1 註冊元件。其實乙個filter就是乙個com元件,所以使用之前需要註冊,可以有兩種方法對元件進行註冊。1.直接使用命令。命令列下輸入 regsvr32 hqtlystd.ax 編譯之後你會在工程目錄下的debug中找到hqtlystd.ax,這個就是要用的filter 即可註冊成功。2.vc6....

MySQL使用學習使用 mysql學習使用

1 mysql學習 1 安裝 ubuntu下直接安裝 apt get install mysql server 2 檢查伺服器是否啟動 sudo netstat tap grep mysql,如果啟動成功,出現以下資訊 tcp00localhost.localdomain mysql listen ...

學習使用CSDN markdown使用

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...