不使用ip时c ++ socket连接不起作用

时间:2015-02-15 22:22:33

标签: c++ sockets dns connect

我正在尝试通过dns与我的C ++客户端连接到我的Java服务器。

因此,当我输入dns名称而不是我的localip时,它将无法连接。码: 不工作

    sockaddr_in addr;
    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = inet_addr("blalblalb.no-ip.com");
    addr.sin_port = htons(4444);

但是当我输入dns的ip-address时,它可以工作。码: 的 WORKS

    sockaddr_in addr;
    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = inet_addr("174.554.xx.xxx");
    addr.sin_port = htons(4444);

为什么?

2 个答案:

答案 0 :(得分:1)

inet_addr() 应该只使用数字和点符号表示地址。

如果您想使用主机名,请改用 getaddrinfo() 。手册页的链接有一个linux示例(和here a Windows example)。

请注意,inet_addr()仅处理IPv4地址,与IPv6格式不兼容。您可以考虑将inet_ptron()用于更加面向未来的开发。

答案 1 :(得分:1)

您必须获取服务器的IP地址才能使用inet_addr()连接到该服务器,您可以使用gethostbyname()来实现此目的。

编辑:     不推荐使用nvm gethostbyname(),因此请使用getaddrinfo()