獲取計算機的IP位址

2021-06-25 21:43:42 字數 1845 閱讀 3093



網際網路協議位址(internet protocol address,又譯為網際協議位址),縮寫為ip位址(ip address)。ip位址是ip協議提供的一種統一的位址格式,它為網際網路上的每乙個網路和每一台主機分配乙個邏輯位址,以此來遮蔽實體地址的差異

可以通過cmd下的ipconfig命名獲取計算機中的ip位址

開啟cmd

輸入ipconfig命令

在程式設計中可以通過使用winsock庫實現獲取ip位址

需要看幾個函式:

wsastartup函式

函式名:wsastartup

函式原型::

int wsastartup( word wversionrequested, lpwsadata lpwsadata);

函式功能:初始化winsock庫

引數:wversionrequested:接收乙個word型整數,低位表示主版本號,高位表示子版本號

lpwsadata:wsadata結構指標,儲存函式獲得的winsock資訊

sockaddr_in結構體用於儲存客戶的位址

struct sockaddr_in

使用此結構體和sockaddr結構體長度一致

scokaddr_in

用來儲存主機的位址資訊,但是主機的ip和埠必須為網路位元組序。通常人們所說的ip「192.168.0.10」,

埠80等都是主機位元組序

網路位元組序和主機位元組序之間的轉換

短整型轉換notohs轉換為htons

u_short notohs (    //將網路位元組序u_short轉換為主機位元組序

u_short netshort   //要轉換的u_short );

u_short  htons (       //將主機位元組序u_short轉換成網路位元組序

u_short   host short   //要轉換的u_short );

ip位址轉換   inet_addr  與  inet_ntoa

unsingned  long   inet_addr(   //將字串(例如"192.168.0.10")轉換為u_long型別

const    char far *cp

);char far * inet_ntoa (   //精sockaddr_in結構體中的sin_addr轉換為字串

struct   in_addr in

);程式**

#include #include //連線winsock庫

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

void main()

//將位址拷貝到in_addr結構體中

memcpy(&addr.s_un.s_addr, p, phost->h_length);

//將in_addr轉換為主機位元組序

char *strip = ::inet_ntoa(addr);

//列印ip位址

printf("本機ip[%d]: %s\n", i+1, strip);

}//列印主機名

printf("主機名:%s\n", szhost);

system("pause");

}

執行結果

獲取計算機的IP位址和計算機名

利用winsock函式獲取主機名和ip位址非常簡單,可以有很多種方法,最簡單的只需通過兩個函式gethostname和gethostbyname可以解決。1 函式gethostname 該函式原型為 int gethostname char name,int namelen 其中,引數name是乙個...

IP位址 計算機名稱 MAC位址如何獲取

以下的操作都在 命令提示視窗 中操作。已知ip,如何獲得計算機名稱 方法 1 使用ping i ip位址 例如已知位址為192.168.1.168。那麼使用ping i 192.168.1.168,如果能ping通該計算機。就可以獲得該計算機的名稱 方法 2 使用nbtstat a 加對方ip查對方...

計算機中的IP位址

a類 0 範圍 0.0.0.0 127.255.255.255 網路標識佔1個位元組主機位址佔3個位元組,第1位為 0 允許有2 7 2 126個a類網路 注意,數字0和 127不作為a類位址,數字127保留給內部回送函式,而數字0則表示該位址是本地宿主機,不能傳送 每個網路大約允許有1670萬台主...