我正在写一个简单的程序来在智能设备之间通信,当我调用gethostbyaddr()时,我收到了11001。这两个设备显示它们连接到相同的网络,但从msdn文档11001错误是找不到主机。这种主机是未知的。有谁有什么建议吗,谢谢?我的代码如下。
void InitializeSocket()
{
WORD socketVersion;
WSADATA wsaData;
SOCKADDR_IN serverInfo;
int returnVal;
LPHOSTENT remotHost;
socketVersion = MAKEWORD(2,2);
WSAStartup(socketVersion, &wsaData);
in_addr iaHost;
//iaHost.s_addr = inet_addr("120.15.22.14");
iaHost.S_un.S_un_b.s_b1 = 120;
iaHost.S_un.S_un_b.s_b2 = 15;
iaHost.S_un.S_un_b.s_b3 = 22;
iaHost.S_un.S_un_b.s_b4 = 14;
remotHost = gethostbyaddr((const char *)&iaHost, sizeof(struct in_addr),
AF_INET);
if(iaHost.s_addr == INADDR_NONE)
{
MessageBox(NULL, TEXT("inet_addr has invalid address"),
TEXT("inet_addr"), MB_OK);
WSACleanup();
closesocket(theSocket);
return;
} if(!remotHost)
{
returnVal = WSAGetLastError();
WSACleanup();
closesocket(theSocket);
return;
}
theSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(theSocket == INVALID_SOCKET)
{
returnVal = WSAGetLastError();
WSACleanup();
closesocket(theSocket);
return;
}
serverInfo.sin_family = AF_INET;
serverInfo.sin_addr = *((LPIN_ADDR)*remotHost->h_addr_list);
serverInfo.sin_port = htons(8888);
//Connect to the server
returnVal = connect(theSocket, (LPSOCKADDR)&serverInfo,
sizeof(struct sockaddr));
if(returnVal == SOCKET_ERROR)
{
returnVal = WSAGetLastError();
WSACleanup();
closesocket(theSocket);
return;
}
}发布于 2009-05-29 01:47:00
错误11001是一个一般性的DNS查找错误,所以我只有一个问题。DNS中是否确实存在120.15.22.14地址?
您可以通过键入以下命令来查找此信息
nslookup 120.15.22.14从命令行。
如果你收到一个错误,那是因为DNS对这些地址一无所知,所以gethostbyaddr()不能给你任何信息。
更新:
回答你的观点:
我只需要输入nslookup 120.15.22.14,但它返回的结果是cant
120.15.22.14。不存在的域。
由于nslookup 120.15.22.14返回错误,因此在DNS中没有该IP地址的条目。那是你的问题。
我查看了我的设备设置,它设置为120.20.32.10,这与120.15.22.14不同,那么这是否意味着我还没有配置DNS?
如果120.20.32.10是您设备的域名系统中的地址,而120.15.22.14是实际地址,那么DNS就是错误的。简单明了。修复DNS。
如果我使用gethostbyname()而不是gethostbyaddr(),它会产生同样的结果吗?
如果要将DNS名称转换为IP地址,请使用gethostbyname()。要将IP地址转换为DNS名称,请使用gethostbyaddr()。
为了连接到远程主机,您通常会使用gethostbyname()调用,因为主机的IP地址随时可能更改。如果DNS总是准确地表示该主机的IP地址,这是首选的方式。
发布于 2009-05-29 01:56:08
我只需输入nslookup 120.15.22.14,但它返回的结果是cant find 120.15.22.14。不存在的域。
我查看了DNS的设备设置,它设置为120.20.32.10,这与120.15.22.14不同,那么这是否意味着我还没有配置DNS?
https://stackoverflow.com/questions/924008
复制相似问题