0

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

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

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

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

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

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

请建议。

4

1 回答 1

1

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

此函数既验证地址,也允许您在相关的套接字调用中使用相同的地址。

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

于 2013-10-15T17:47:40.450 回答