gethostbyname 调用gethostbyname返回错误WSAHOST_NOT_FOUND怎么解决? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 WSAHOST_NOT_FOUND Authoritative answer host not found. 就是没有找到,DNS 没有返回正确的解析结果 正常代码: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; } } 先获得本机主机名,pHost=gethostbyname(strHostName);strHostName应该是主机名吧,你好像是写进去的 用char HostName[100]; gethostname(HostName, sizeof(HostName));// 获得本机主机名.试试不知有没有用对你 gina.dll如何调试 清除列表框遇到的问题 这种不规则BUTTON怎么做? 谁有对CDAORecordSet进行再次封装后的类啊 SystemParametersInfo函数运行失败!? CListBox的问题 远程关机的问题,急,各位大侠留步 转帖 主 题: VC++ 中 SCROLLBAR的使用,请帮忙! 怎么得到另一个窗口的句柄? 关于ListCtrl控件的小问题,谢谢! 小问题 error:failed to (or don't know how to) build ---APPMODUL.CPP怎么办呢?
Authoritative answer host not found.
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;
}
}
strHostName应该是主机名吧,你好像是写进去的
用char HostName[100];
gethostname(HostName, sizeof(HostName));// 获得本机主机名.
试试不知有没有用对你