程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 獲取本機IP地址 2011.12.21

獲取本機IP地址 2011.12.21

編輯:關於C

#include <iostream> 
using namespace std; 
 
#include <Windows.h> 
 
 
#pragma comment( lib, "ws2_32.lib" ) 
 
char * GetIpList() 
 

 
    WORD wVersionRequested; 
 
    WSADATA wsaData; 
 
    int err; 
 
    wVersionRequested = MAKEWORD( 2, 2 ); 
 
    err = WSAStartup( wVersionRequested, &wsaData ); 
 
    if ( err != 0 ) 
 
    { 
 
        cout<<"WSAStartup failed !"<<endl; 
 
        return false; 
 
    } 
 
    char szhn[256]; 
 
    int nStatus = gethostname(szhn, sizeof(szhn)); 
 
    if (nStatus == SOCKET_ERROR ) 
 
    { 
 
        cout<<"gethostname failed, Error code: "<<WSAGetLastError()<<endl; 
 
        return false; 
 
    } 
 
    HOSTENT *host = gethostbyname(szhn); 
    char * ipaddress =NULL; 
 
    if (host != NULL) 
    { 
        ipaddress = inet_ntoa( *(IN_ADDR*)host->h_addr_list[0]); 
 
    } 
 
    WSACleanup(); 
 
    return ipaddress; 
 

 
int main(int argc, char *argv[]) 
 

    char * ip_address = NULL; 
    ip_address = GetIpList(); 
    cout<<ip_address<<endl; 
    return 0; 
 

輸出:

192.168.1.113

這是我本機的ip地址。


邏輯:先獲取本機計算機名,然後通過計算機名獲取本機的ip地址。

因為,我本機就一個網卡,所以只獲取了一個,假如機子上有多個網卡的話,h_addr_list[i],

根據有幾個i,一次獲取就行了。

摘自 lingxiu0613的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved