在介紹如何獲取機器名&本機ip之前,先了解一下幾個概念
1、hostent 網域名稱結構體
struct hostent ;
2、gethostname()函式:返回本地主機的標準主機名。
gethostname(
__out_bcount(namelen) char far * name,
in int namelen);
該函式把本地主機名存放入由name引數指定的緩衝區中。返回的主機名是乙個以null結束的字串。主機名的形式取決於windows sockets實現-它可能是乙個簡單的主機名,或者是乙個網域名稱。然而,返回的名字必定可以在gethostbyname()和wsaasyncgethostbyname()中使用。
如果沒有錯誤發生,gethostname()返回0。否則它返回socket_error。應用程式可以通過wsagetlasterror()來得到乙個特定的錯誤**。
3、gethostbyname()返回對應於給定主機名的包含主機名字和位址資訊的hostent結構指標
gethostbyname(
__in const char far * name);
如果沒有錯誤發生,gethostbyname()返回如上所述的乙個指向hostent結構的指標,否則,返回乙個空指標。應用程式可以通過wsagetlasterror()來得到乙個特定的錯誤**。
4、inet_ntoa() :將網路位址轉換成「.」點隔的字串格式
inet_ntoa(
in struct in_addr in);
該函式將乙個用in引數所表示的internet位址結構轉換成以「.」 間隔的諸如「a.b.c.d」的字串形式。請注意inet_ntoa()返回的字串存放在windows套介面實現所分配的記憶體中。應用程式不應假設該記憶體是如何分配的。在同乙個執行緒的下乙個windows套介面呼叫前,資料將保證是有效。
若無錯誤發生,inet_ntoa()返回乙個字元指標。否則的話,返回null。其中的資料應在下乙個windows套介面呼叫前複製出來。
5、重點來了,直接附上**吧
void gethostaddress
6、如果本地ip不唯一呢
void gethostaddress }
}
MFC之獲取本機IP位址
vs2013 按鈕響應 wsadata wsadata if 0 wsastartup makeword 2,2 wsadata 初始化 char szhostname max path 1 gethostname szhostname,max path 得到計算機名 hostent p getho...
獲取本機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位址及其類別
var ip string ipstr string buffer array 1.32 of char i integer wsdata twsadata host phostent begin if wsastartup 2,wsdata 0 then 為程式使用ws2 32.dll初始化 be...