可以在Debian中获取真实的主机名吗?

时间:2019-12-19 06:20:08

标签: debian glibc

我正在尝试从getaddrinfo获取当前主机名的主机ip。由于/etc/hosts已解析为127.0.1.1,因此在Debian中不起作用。

是否有一种方法可以强制呼叫进行DNS查询,而不是仅依靠/etc/hosts?或者也许有办法解决?我发现使用getsockname来获取用于套接字的ip的建议,但这对我不起作用,因为我没有固定的远程节点可以一直连接。

这是一个简单的代码段供参考:

void print_host_ip(const char *hostname)
{

    struct addrinfo *addr_info = NULL;
    struct addrinfo hints;
    memset(&hints, 0, sizeof(hints));
    hints.ai_family = AF_INET;

    assert(getaddrinfo(hostname, nullptr, &hints, &addr_info) == 0);

    char hostip[64] = {0};
    for (struct addrinfo *it = addr_info; it; it = it->ai_next) { 
        struct sockaddr_in *sai = (struct sockaddr_in *) it->ai_addr; 
        fprintf(stdout, "ip is %s\n", inet_ntop(AF_INET, (void *) &sai->sin_addr, hostip, 64)); 
    } 
}

0 个答案:

没有答案