C++套接字连接在不使用ip时不起作用

标签 c++ sockets dns connect

我正在尝试通过 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/

相关文章:

c++ - 内联函数和调用约定

c++ - 如何在自制操作系统中获取键盘输入?

c++ - vector 的 std::find() 错误

java - 如何在服务器上编译我的服务器代码?

java - 向 Serializable 类添加方法对序列化对象的大小有什么影响?

linux - 如何使用 recvfrom() 获取 recvmsg() 返回的标志

php - 以编程方式从域名中提取关键字

c++ - OpenGL:指定将什么值写入深度缓冲区?

ssl - 为什么 dnscrypt 站点不起作用?

node.js - 如何使用 Node.js 和 Express 设置 Google Domains 动态 DNS?