调用gethostbyname返回错误WSAHOST_NOT_FOUND怎么解决?

解决方案 »

  1.   

    WSAHOST_NOT_FOUND
     Authoritative answer host not found.
     
      

  2.   

    就是没有找到,DNS 没有返回正确的解析结果
      

  3.   

    正常代码:
    void CChatDlg::OnBtnSend() 
    {
    // TODO: Add your control notification handler code here
    DWORD  dwIP;
    CString  strSend;
    WSABUF   wsabuf;
    DWORD   dwSend;
    int   len;
    SOCKADDR_IN   addrTo;
    ((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS1))->GetAddress(dwIP);
    addrTo.sin_addr.S_un.S_addr=htonl(dwIP);
    addrTo.sin_family=AF_INET;
    addrTo.sin_port=htons(6000); GetDlgItemText(IDC_EDIT_SEND,strSend);
    len=strSend.GetLength();
    wsabuf.buf=strSend.GetBuffer(len);
    wsabuf.len=len+1; SetDlgItemText(IDC_EDIT_SEND,""); if(SOCKET_ERROR==WSASendTo(m_socket,&wsabuf,1,&dwSend,0,(SOCKADDR*)&addrTo,sizeof(SOCKADDR),NULL,NULL))
    {
    MessageBox("发送数据失败!");
    return;
    }
    }
    加了if-else语句后的错误代码:
    void CChatDlg::OnBtnSend() 
    {
    // TODO: Add your control notification handler code here
    DWORD  dwIP;
    CString  strSend;
    WSABUF   wsabuf;
    DWORD   dwSend;
    int len;
    SOCKADDR_IN   addrTo;
    CString   strHostName;
    HOSTENT  *pHost;
    if(GetDlgItemText(IDC_EDIT_HOSTNAME,strHostName),strHostName=="")
    {
    ((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS1))->GetAddress(dwIP);
        addrTo.sin_addr.S_un.S_addr=htonl(dwIP); }
    else
    {
    pHost=gethostbyname(strHostName);
    int  nihao=WSAGetLastError();
    CString  str;
    str.Format("%d",nihao);


            if(WSAHOST_NOT_FOUND==nihao)
    {
    MessageBox("是的1");
    }
    if(WSATRY_AGAIN==nihao)
    {
    MessageBox("是的2");
    }
    if(WSANO_RECOVERY==nihao)
    {
    MessageBox("是的3");
    }
     
    addrTo.sin_addr.S_un.S_addr=*((DWORD*)pHost->h_addr_list[0]);
    }
    addrTo.sin_family=AF_INET;
    addrTo.sin_port=htons(6000); GetDlgItemText(IDC_EDIT_SEND,strSend);
    len=strSend.GetLength();
    wsabuf.buf=strSend.GetBuffer(len);
    wsabuf.len=len+1; SetDlgItemText(IDC_EDIT_SEND,""); if(SOCKET_ERROR==WSASendTo(m_socket,&wsabuf,1,&dwSend,0,(SOCKADDR*)&addrTo,sizeof(SOCKADDR),NULL,NULL))
    {
    MessageBox("发送数据失败!");
    return;
    }

    }
      

  4.   

    先获得本机主机名,pHost=gethostbyname(strHostName);
    strHostName应该是主机名吧,你好像是写进去的 
    用char    HostName[100];
    gethostname(HostName, sizeof(HostName));// 获得本机主机名.
    试试不知有没有用对你