使用上文所說的 方法得到主機名,再使用函式 gethostbyname 可以得到 hostent結構的主機實體。
當中儲存了主機的一些資訊,包括ip。
gethostbyname 原型:
struct hostent far *
wsaapi
gethostbyname(
__in const char far * name
);
返回的 hostent 結構:
struct hostent ;
hostent是host entry的縮寫,該結構記錄主機的資訊,包括主機名、別名、位址型別、位址長度和位址列表。
之所以主機的位址是乙個列表的形式,原因是當乙個主機有多個網路介面時,就會有多個位址。
我們這裡求本機的ip,可以使用第乙個位址。
#include "stdafx.h"
#include #include #pragma comment(lib,"ws2_32.lib")
using namespace std;
int _tmain(int argc, _tchar* argv)
; wsadata data;
if(wsastartup(makeword(1,1),&data) != 0)
//得到主機名
if(gethostname(szcomputername,max_path) == socket_error)
//得到主機實體
struct hostent *p = gethostbyname(szcomputername);
if (p == null)
//取得位址
in_addr addr;
memcpy(&addr, p->h_addr_list[0], sizeof(in_addr));
//把ip位址轉換為點分十進位制形式的字串,如192.168.0.***形式
std::string localip;
localip.assign(inet_ntoa(addr));
wsacleanup();
return 0;
}
Windows phone8 獲取本機 IP 位址
可以在 bing 查詢中輸入 my ip address 然後確認這樣可以看到自己的 ip。如果需要通過 程式設計來獲取本機 ip,可以使用以下 注意 此段 在 wp7.1 上無法編譯通過,networkinformation 未定義。1 public class gethostipaddress ...
獲取本機IP
獲取本機ip char name 255 gethostname name,sizeof name cstring ip lphostent lphost lphost gethostbyname name in addr ppaddr in addr lphost h addr list in a...
獲取本機IP位址
cstring strlocalip char szhostname 64 memset szhostname,0x00,sizeof szhostname gethostname szhostname,sizeof szhostname phostent phost gethostbyname s...