http — Как определить, является ли URL-адрес IP-адрес в C / C ++?

Я использую Squid и мне нужно сделать некоторые настройки.
У меня есть список IP-адресов, для которых необходимо предпринять определенные действия. Не могу использовать acl-директивы squid, так как последнее действие должно быть выполнено другим сервером.

Мне нужно проверить, является ли доступный URL-адрес действительным IP-адресом или нет. Если это так, мне нужно внести некоторые изменения в заголовок.

Я пытался сделать это с помощью регулярных выражений, не похоже, что работает хорошо.

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

Также он потерпит неудачу в случае адреса IPv6.

Существует ли C / C ++ API, с помощью которого это можно определить?

Просьба предложить.

0

Решение

Возможно, вам нужен inet_pton — который возвращает -1 при сбое и поддерживает как IPv4, так и будущие IPv6-адреса. Если вам все еще нужно написать свою собственную систему IP-адресов, помните, что стандартное 32-разрядное шестнадцатеричное число является действительным IP-адресом, но не в точечно-десятичной записи.

Эта функция как проверяет адрес, так и позволяет использовать тот же адрес в связанных вызовах сокетов.

(Из поста Рэймонда Мартино здесь: Как вы проверяете, что строка является действительным адресом IPv4 в C ++?)

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]