如何确定URL是否是C / C ++中的IP地址?

时间:2013-10-15 17:15:38

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

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

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

我尝试通过正则表达式来做,似乎并没有很好地运作。

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

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

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

请建议。

1 个答案:

答案 0 :(得分:0)

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

此功能既可以验证地址,也可以在相关的套接字调用中使用相同的地址。

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