【问题标题】:C++ IP Address human-readable formC++ IP 地址人类可读的形式
【发布时间】:2009-08-18 16:52:22
【问题描述】:

在 C/C++ 中,您可以使用常规的 gethostbyname() 调用将带点的 IP 地址字符串(在 localhost 的情况下为“127.0.0.1”)转换为适合标准套接字调用的结构。

现在你如何翻译回来?我知道我可以做一些位移来准确地获得我想要的位集并将它们打印出来,但是有没有任何“标准”功能可以为我做到这一点?它用于输出到日志文件中,以便我“真正”知道我正在连接谁/什么,因此人类可读的点地址比原始十六进制要好得多。

谢谢。

【问题讨论】:

    标签: c++ c sockets


    【解决方案1】:

    首先,在新代码中,您通常应该更喜欢使用 getaddrinfo() 而不是 gethostbyname(),后者既旧又笨重,很难同时支持 IPv4 和 IPv6。见这里:https://beej.us/guide/bgnet/html/multi/syscalls.html

    其次,执行您想要的功能的函数称为inet_ntop

    【讨论】:

    • 我将其标记为正确,但发现它在 Windows 下不起作用,但确实发现正确的函数调用是 inet_ntoa ,它几乎完成了相同的事情。根据beej,它不支持IPv6,但它在win32用户的普通winsock.h中。
    【解决方案2】:

    我会使用inet_ntop

    【讨论】:

      猜你喜欢
      • 2018-09-18
      • 2020-12-23
      • 2016-07-05
      • 1970-01-01
      • 2019-11-28
      • 2010-11-22
      • 1970-01-01
      • 1970-01-01
      • 2016-06-30
      相关资源
      最近更新 更多