網際網路協議位址(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萬台主...