要的是在网络属性中设置的IP,不是127.0.0.1 或 0.0.0.0

解决方案 »

  1.   

    为什么不自己找MFC类库看一下,在CSocket里有
      

  2.   

    要在VC++6.0的程序中获得本机的IP地址,你可以使用GetNetworkParams函数。DWORD GetNetworkParams(PFIXED_INFO pFixedInfo,PULONG pOutBufLen);第一个参数指向FIXED_INFO结构体,函数调用后本机的所有ip配置信息都存放在这个结构体中。第二个参数是一个long型指针,表示这个结构体的长度。
      

  3.   

    //==== 1、得到主机的IP地址
    ULONG GetHostIPAddr(
      int nNo  // 网卡编号,一般设置为0,表示第一个网卡
    )
    {
    char szHostName[100] = {0};
    gethostname(szHostName, sizeof(szHostName));
    hostent* he = gethostbyname(szHostName);
    return *((ULONG*)(he->h_addr_list[0]));
    }
      

  4.   

    还是有问题,1.MSDN中没有GetNetworkParams函数.
              2.上面的代码获得的是局域网中服务器的主机名,所以的不到本地机器的IP.
      

  5.   

    当然有:
    例子:
    //
    // Link with IPHlpAPI.lib
    //
    #include <stdio.h>
    #include <windows.h>
    #include <iphlpapi.h>main() {
       
       FIXED_INFO * FixedInfo;
       ULONG    ulOutBufLen;
       DWORD    dwRetVal;
       IP_ADDR_STRING * pIPAddr;   FixedInfo = (FIXED_INFO *) GlobalAlloc( GPTR, sizeof( FIXED_INFO ) );
       ulOutBufLen = sizeof( FIXED_INFO );
       
       if( ERROR_BUFFER_OVERFLOW == GetNetworkParams( FixedInfo, &ulOutBufLen ) ) {
          GlobalFree( FixedInfo );
          FixedInfo = GlobalAlloc( GPTR, ulOutBufLen );
       }   if ( dwRetVal = GetNetworkParams( FixedInfo, &ulOutBufLen ) ) {
            printf( "Call to GetNetworkParams failed. Return Value: %08x\n", dwRetVal );
       }
       else {
          printf( "Host Name: %s\n", FixedInfo -> HostName );
          printf( "Domain Name: %s\n", FixedInfo -> DomainName );
          
          printf( "DNS Servers:\n" );
          printf( "\t%s\n", FixedInfo -> DnsServerList.IpAddress.String );
          
          pIPAddr = FixedInfo -> DnsServerList.Next;
          while ( pIPAddr ) {
             printf( "\t%s\n", pIPAddr ->IpAddress.String );//->IP?
             pIPAddr = pIPAddr ->Next;
          }
       }
       exit( 0 );
    }