我正在尝试通过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);
为什么?
答案 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()
。