我尝试了使用getaddrinfo,结果得不到啊?
请问大家用得是什么方法?

解决方案 »

  1.   

    typedef struct TCPConfigPacket
    {
        unsigned char NodeID[6];
        unsigned char  edicfg[4];
    }TCPCFG;IP_ADAPTER_INFO AdapterInfo[16]; 
    DWORD dwBufLen = sizeof(AdapterInfo); 
    DWORD dwStatus = GetAdaptersInfo(AdapterInfo,&dwBufLen); 
    PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;
    memcpy(recv_cfg.NodeID, pAdapterInfo->Address, 6);
      

  2.   

    struct addrinfo hints,*res;
    char port[]="8000";//端口数
    memset(&hints,0,sizeof(addrinfo));
    hints.ai_flags = AI_PASSIVE;    //设置参数
    // hints.ai_family=AF_UNSPEC;
    hints.ai_family=AF_INET6;
    hints.ai_socktype=SOCK_STREAM;
    hints.ai_protocol=IPPROTO_TCP;
    char cname[100];
    gethostname(cname,100);    //获得主机的名称
    int rc=getaddrinfo(cname,port,&hints,&res);    //利用主机名称获取本地地址
    if(rc == WSANO_DATA)
    cout<<"Parse addr failed."<<endl; char buff[100]="shuibian";
    DWORD bufflen=100;
    //将本地地址转换成字符串显示
    WSAAddressToString(res->ai_addr,res->ai_addrlen,NULL,buff,&bufflen);
    cout<<"connect to address is : "<<buff<<endl;