首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gethostbyaddr()有错误11001

gethostbyaddr()有错误11001
EN

Stack Overflow用户
提问于 2009-05-29 01:29:26
回答 2查看 3.5K关注 0票数 0

我正在写一个简单的程序来在智能设备之间通信,当我调用gethostbyaddr()时,我收到了11001。这两个设备显示它们连接到相同的网络,但从msdn文档11001错误是找不到主机。这种主机是未知的。有谁有什么建议吗,谢谢?我的代码如下。

代码语言:javascript
复制
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;
    }
代码语言:javascript
复制
    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;
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-05-29 01:47:00

错误11001是一个一般性的DNS查找错误,所以我只有一个问题。DNS中是否确实存在120.15.22.14地址?

您可以通过键入以下命令来查找此信息

代码语言:javascript
复制
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地址,这是首选的方式。

票数 0
EN

Stack Overflow用户

发布于 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?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/924008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档