C++ IP 地址人类可读的形式
Posted
技术标签:
【中文标题】C++ IP 地址人类可读的形式【英文标题】:C++ IP Address human-readable form 【发布时间】:2009-08-18 16:52:22 【问题描述】:在 C/C++ 中,您可以使用常规的 gethostbyname() 调用将带点的 IP 地址字符串(在 localhost 的情况下为“127.0.0.1”)转换为适合标准套接字调用的结构。
现在你如何翻译回来?我知道我可以做一些位移来准确地获得我想要的位集并将它们打印出来,但是有没有任何“标准”功能可以为我做到这一点?它用于输出到日志文件中,以便我“真正”知道我正在连接谁/什么,因此人类可读的点地址比原始十六进制要好得多。
谢谢。
【问题讨论】:
【参考方案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
。
【讨论】:
以上是关于C++ IP 地址人类可读的形式的主要内容,如果未能解决你的问题,请参考以下文章