我正在尝试通过 DNS 使用 C++ 客户端连接到我的 Java 服务器。
因此,当我输入 dns 名称而不是本地 IP 时,它将无法连接。代码: 不工作
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 地址时,它就起作用了。代码: 工作
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr("174.554.xx.xxx");
addr.sin_port = htons(4444);
这是为什么呢?
最佳答案
<强> inet_addr()
应该只采用数字和点表示法的地址。
如果您想使用主机名,请使用 getaddrinfo()
相反。手册页的链接有一个 Linux 示例(和 here a Windows example )。
请注意,inet_addr()
仅处理 IPv4 地址,与 IPv6 格式不兼容。您可以考虑inet_ptron()
以获得更具前瞻性的开发。
关于C++套接字连接在不使用ip时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28531903/