在 C++ 中如何确定字符串是否是有效的 IPv6 地址?

发布于 2024-11-14 05:56:29 字数 681 浏览 4 评论 0原文

可能的重复:
C 中的 IPv6 解析

我需要检查字符串是否是 C++ 中的有效 IPv6 地址。

C# 有一些优雅的解决方案 这里和相当丑陋的正则表达式此处

在 C++ 中有没有好的方法可以做到这一点?

我目前正在使用它,但它在 Windows XP 上不起作用(缺少 inet_pton()):

unsigned char buf[sizeof(struct in6_addr)];
bool isvalid= inet_pton(PF_INET6, (const char *)addr, buf);

Possible Duplicate:
IPv6 parsing in C

I need to check strings if they are valid IPv6 addresses in C++.

There are elegant solutions for C# here and rather ugly regex here.

Is there a good way to do this in C++ ?

I'm currently using this, but it doesn't work on Windows XP (inet_pton() is missing):

unsigned char buf[sizeof(struct in6_addr)];
bool isvalid= inet_pton(PF_INET6, (const char *)addr, buf);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

吾家有女初长成 2024-11-21 05:56:29

您可以使用 getaddrinfo 在 Linux 中,或者在 Windows 2000 以后的 Windows 中。(请参阅该文档页面中标题为“使用 AI_NUMERICHOST 的示例代码”的部分)

You can use getaddrinfo in Linux, or in Windows since Windows 2000. (See the section of that document page entitled "Example code using AI_NUMERICHOST")

水波映月 2024-11-21 05:56:29

您可以使用 WSAStringToAddress ,自 Windows 2000 起可用。

You can use WSAStringToAddress, available since Windows 2000.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文