網路程式設計 IP幫助函式

2021-09-06 03:42:00 字數 2667 閱讀 2188

獲取乙個fixed_info的結構體

typedef struct  fixed_info_w2ksp1, *pfixed_info_w2ksp1;

#if (ntddi_version >= ntddi_win2ksp1)

typedef fixed_info_w2ksp1 fixed_info;

typedef fixed_info_w2ksp1 *pfixed_info;

#endif

1.getnumberofinte***ces獲取介面數量

dword getnumberofinte***ces(

__out  pdword pdwnumif

);2.getadaptersinfo返回本地網路介面卡列表

dword getadaptersinfo(

__out    pip_adapter_info padapterinfo,

__inout  pulong poutbuflen

);

int main()

// 再次呼叫getinte***ceinfo來獲取我們實際需要的資料

if(::getinte***ceinfo(pinfo, &uloutbuflen) == no_error)

else

::globalfree(pinfo);

return 0;

}

獲取ip位址列表、新增和刪除ip位址

getipaddrtable、addipaddress、deleteipaddress

int main()

// 再次呼叫getipaddrtable獲取實際我們想要的資料

if(::getipaddrtable(pipaddrtable, &dwsize, false) == no_error)

else

::globalfree(pipaddrtable);

// 我們將要新增的ip和mast

uint iaipaddress;

uint imipmask;

iaipaddress = inet_addr("192.168.0.27");

imipmask = inet_addr("255.255.255.0");

// 返回的控制代碼

ulong ntecontext = 0;

ulong nteinstance = 0;

// 向第乙個介面卡新增ip位址

dword dwret;

dwret = ::addipaddress(iaipaddress, imipmask,

pipaddrtable->table[0].dwindex, &ntecontext, &nteinstance);

if(dwret == no_error)

else

::localfree(lpmsgbuf);

}// 刪除上面在第乙個介面卡上新增的ip位址

dwret = ::deleteipaddress(ntecontext);

if(dwret == no_error)

else

return 0;

}

1.獲取tcp和udp連線表(gettcptable,getudptable)

pmib_udptable mygetudptable(bool border)

return null;

}void myfreeudptable(pmib_udptable pudptable)

// 列印udp監聽表資訊

pmib_udptable pudptable = mygetudptable(true);

if(pudptable != null)

myfreeudptable(pudptable);

}

相關的函式get***statistics(getipstatistics,geticmpstatistics,gettcpstatistics,getudpstatistics)

// 獲取udp統計資料

mib_udpstats udpstats;

if(::getudpstatistics(&udpstats) == no_error)

1.getipforwardtable獲取路由表

pmib_ipforwardtable mygetipforwardtable(bool border)

return null;

}

void printipforwardtable()

myfreeipforwardtable(piproutetable);

}}

createipforwardentry、deleteipforwardentry、setipforwardentry

1.獲取ip位址到介面卡的對映關係,即arp表(getipnettable)

bool inte***ceidxtointe***ceip(pmib_ipaddrtable pipaddrtable, dword dwindex, char str)

else

return false;}}

return false;

}

網路程式設計 IP位址

獲取本地主機位址物件 inetaddress ip inetaddress.getlocalhost system.out.println ip.gethostname ip.gethostaddress 根據給定主機名返回主機的 ip 位址。主機名也可為ip位址,檢查位址的有效性 ip位址和主機名...

網路IP轉換函式

src.sin addr.s addr inet addr 構建網路位址。printf s n inet ntoa src.sin addr 將網路位址轉換成字串。注意 inet ntoa存在的問題是inet ntoa的返回值是乙個static型別的char 指標,所以會出現問題 char a1,a...

網路程式設計 IP協議介紹

在網路中,一幀乙太網資料報的格式如下所示,常用的udp以及tcp通訊都是基於ip協議基礎上的。1 版本佔4 位,指ip 協議的版本。通訊雙方使用的 ip協議版本必須一致。目前廣泛使用的 ip協議版本號為4 即 ipv4 關於 ipv6 目前還處於草案階段。2 首部長度佔4 位,可表示的最大十進位制數...