【问题标题】:How to determine if a URL is an IP Address in C/C++?如何确定 URL 是否是 C/C++ 中的 IP 地址?
【发布时间】:2013-10-23 14:32:05
【问题描述】:

我正在使用 squid,需要进行一些自定义。 我有一个需要采取一些措施的 IP 地址列表。不能使用 squid 的 acl 指令,因为最终操作需要由其他服务器执行。

我需要检查被访问的 URL 是否是有效的 IP 地址。如果是,我需要对标题进行一些更改。

我尝试通过正则表达式来做,似乎不太好。

^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$

如果是 IPv6 地址,它也会失败。

是否有可以确定这一点的 C/C++ API?

请建议。

【问题讨论】:

    标签: c++ http url ip-address squid


    【解决方案1】:

    您可能需要 inet_pton - 失败时返回 -1,并支持 IPv4 和未来的 IPv6 地址。如果您仍需要编写自己的 IP 地址系统,请记住标准的 32 位十六进制数字是有效的 IP 地址,但不是点分十进制表示法。

    这个函数既可以验证地址,也可以让你在相关的socket调用中使用相同的地址。

    (来自 Raymond Martineau 的帖子:How do you validate that a string is a valid IPv4 address in C++?

    【讨论】:

      猜你喜欢
      • 2011-08-21
      • 2011-02-05
      • 2013-03-10
      • 2010-10-16
      • 2012-12-26
      • 2016-10-21
      • 2020-01-28
      • 2011-11-30
      • 2010-10-21
      相关资源
      最近更新 更多