请教:在多个网卡的情况下,如何获取所有的ip地址

解决方案 »

  1.   

    char hostname[256];
    //首先取得机器名称
    gethostname(hostname, sizeof(hostname));
    //根据名称获得机器IP地址信息,存放在结构体hostent中
    LPHOSTENT lphost = gethostbyname(hostname);//对链表进行访问,取出所有的IP地址
    int i=0;
    while(lphost->h_addr_list[i] != NULL)
    {
    memcpy(&LocalIPList[i][0],inet_ntoa(*(struct in_addr *)lphost->h_addr_list[i]),16);
    i++;
    }
      

  2.   

    另一种方法是调用GetAdaptersInfo()函数
      

  3.   

    谢谢 comman_wang了 
    不过//根据名称获得机器IP地址信息,存放在结构体hostent中
    LPHOSTENT lphost = gethostbyname(hostname); 这一句话就搞定了么?
    能把详细代码给我么[email protected]
      

  4.   

    这个包含在ws2_32.lib中,你在程序中链入这个库就可以了。
      

  5.   


    void CGetIPDlg::OnQuery() 
    {
       char szHostName[128];
    char szT[20];

    if( gethostname(szHostName, 128) == 0 )
    {
    // Get host adresses
    m_HostName.SetWindowText(szHostName);
    struct hostent * pHost;
    int i; 
    pHost = gethostbyname(szHostName); 
    for( i = 0; pHost!= NULL && pHost->h_addr_list[i]!= NULL; i++ ) 
    {
     char str[100]; 
     char addr[20];
     int j;  
     LPCSTR psz=inet_ntoa (*(struct in_addr *)pHost->h_addr_list[i]);
     m_IPAddr.AddString(psz);
    } }
    }
      

  6.   

    GetIpAddrTable可以获得全部IP的列表,很简单,自己看一下MSDN
      

  7.   

    GetIpAddrTable,不错,可以试试。
      

  8.   

    用gethostbyname()得到的是一个ip地址列表
    你可以用for循环到null为止,就可以将所有ip地址去出来了