是否有可用于IP地址操作的好的高级库?我需要做以下事情:
我可以使用低级inet_ntop()等。但是有更好的库可以更好更快地处理这些(c / c ++ / python)吗?
答案 0 :(得分:3)
对于C ++,标准的高级答案是boost.asio。具体来说,将字符串转换为它具有的IP地址 ip::address::from_string并获取IP地址的字符串表示形式,它有to_string。
检查other constructors是否有ip地址对象 - 使用原始字节可能比字符串更有效。
答案 1 :(得分:1)
如果您正在编写套接字应用程序,那么地址操作极不可能成为您最重要的考虑因素。当您有网络I / O担心时,不要浪费时间。
答案 2 :(得分:1)
inet_ntop
和inet_pton
不支持IPv6区域,因此推荐的API只是getaddrinfo
和getnameinfo
,它们与IP版本无关。
传递NI_NUMERICHOST
等标志以强制进行IP地址验证而不进行DNS解析。
http://msdn.microsoft.com/en-us/library/ms738532(VS.85).aspx
示例:
char* input_str
struct addrinfo *result = NULL, hints;
ZeroMemory( &hints, sizeof(hints) );
hints.ai_flags = AI_NUMERICHOST;
hints.ai_family = AF_UNSPEC;
dwRetval = getaddrinfo( input_string, NULL, &hints, &result );
if ( dwRetval != 0 ) {
/* failure */
}
答案 3 :(得分:0)
我有令人难以置信的ipv4 / ipv6验证正则表达式,这是非常长且非平凡的产生。如果你愿意,我可以分享。
答案 4 :(得分:0)
Poco Library有一套很好的主机名/ IP地址操作例程,还有很多其他很棒的东西。 FreeBSD端口有点过时了,但是我们也许可以用尖锐的棍子戳端口维护者并让他更新它。哦,等等...... :)