【问题标题】:How to determine if a string is a valid IPv6 address in C++? [duplicate]如何确定字符串是否是 C++ 中的有效 IPv6 地址? [复制]
【发布时间】:2011-09-09 08:48:19
【问题描述】:

可能重复:
IPv6 parsing in C

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

对于 C# here 和相当丑陋的正则表达式 here,有优雅的解决方案。

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

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

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

【问题讨论】:

  • getaddrinfo()(来自重复问题)如果您没有 inet_pton(),则在 XP 中似乎可用
  • 投票重新打开,因为链接的问题明确标记了 C,而这个问题标记了 C++。链接的 C 问题可能缺少一些答案,这需要 C++ 库,例如 boost。其实至少有一个option,它使用了boost::asio。

标签: c++ visual-studio-2008 windows-xp ip-address ipv6


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2010-10-22
      • 2010-10-21
      • 2023-03-21
      • 2016-05-24
      • 1970-01-01
      • 2012-04-02
      • 2021-05-16
      • 2013-10-02
      • 2011-01-11
      相关资源
      最近更新 更多