Я использую кальмаров и нуждаюсь в некоторой настройке. У меня есть список IP-адресов, для которых необходимо предпринять некоторые действия. Не могу использовать директивы acl squid, поскольку последнее действие должно быть принято другим сервером.
Мне нужно проверить, является ли доступным URL-адресом действительным IP-адресом или нет. Если это так, мне нужно внести некоторые изменения в заголовок.
Я пробовал делать это с помощью регулярных выражений, похоже, не работает хорошо.
^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$
Также он будет терпеть неудачу в случае адреса IPv6.
Существует ли API C/C++, с помощью которого это можно определить?
Pls предлагает.
Вероятно, вам нужен inet_pton, который возвращает -1 при сбое и поддерживает как IPv4, так и будущие IPv6-адреса. Если вам все еще нужно написать свою собственную систему IP-адресов, помните, что стандартный 32-разрядный шестнадцатеричный номер является допустимым IP-адресом, но не в десятичной форме.
Эта функция проверяет адрес, а также позволяет использовать один и тот же адрес в связанных вызовах сокетов.
(Из сообщения Raymond Martineau здесь: Как вы подтверждаете, что строка является допустимым адресом IPv4 в C++?)