擷取電腦的IP地址

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   os   使用   ar   for   



互連網協議地址(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{ short sin_family //地址族,Winsock中必須是AF_INET unsigned short sin_port    //網路位元組序的連接埠號碼struct in_addr  //網路位元組序的IP地址char sin_zero[8] //沒有用,只是為了增加8個位元組長度}
使用此結構體和sockaddr結構體長度一致
scokaddr_in用來儲存主機的地址資訊,但是主機的IP和連接埠必須為網路位元組序。通常人們所說的IP“192.168.0.10”,連接埠80等都是主機位元組序
網路位元組序和主機位元組序之間的轉換
短整型轉換notohs轉換為htonsu_short notohs (    //將網路位元組序u_short轉換為主機位元組序    u_short netshort   //要轉換的u_short);
u_short  htons (       //將主機位元組序u_short轉換成網路位元組序u_short   host short   //要轉換的u_short);
IP地址轉換   Inet_addr  與  inet_ntoaunsingned  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 <stdio.h>#include <winsock2.h>//串連Winsock庫#pragma comment(lib, "ws2_32.lib")void main(){    //調用WSAtartup初始化Winsock庫    WSADATA wsaData;    ::WSAStartup(        MAKEWORD(2,2),//版本號碼為2.2        &wsaData        );    char szHost[256];//存放主機名稱的緩衝區    ::gethostname(szHost, 256);//取得本地主機名稱    hostent *pHost = ::gethostbyname(szHost);//通過主機名稱得到地址資訊    //一個主機可能有多個網卡、多個IP、下面的代碼輸出所有的IP地址    in_addr addr;    for(int i=0; ; i++)    {        //獲得地址(網路位元組)        char *p = pHost->h_addr_list[i];        if(NULL == p)        {            break;//退出迴圈        }        //將地址拷貝到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地址

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.