![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
GoDleSS |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 11.2.2007 Где: Пироговский Репутация: 2 Всего: 2 |
Доброго времени суток, уважаемые форумчане!
Попалась мне задачка одна, а красивых методов пока не придумал, может кто подскажет из собственного опыта: Есть диапазон ip-адресов, заданный в виде 192.168.0.1 - 192.168.1.254. Есть список таких же диапазонов. Цель: проверить, пересекается ли введенный диапазон с любым диапазоном из списка. Строить по всем диапазонам массивы - глупо. Можно, конечно, перевести в число и проверять, т.е. что-то вроде:
Но хотелось бы нечто более красивое ![]() --------------------
It's a nice day to die my friend! |
|||
|
||||
AriX |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 16.6.2003 Репутация: 1 Всего: 19 |
Net::IP, Net::Patricia.
Это сообщение отредактировал(а) AriX - 12.9.2008, 17:20 |
|||
|
||||
GoDleSS |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 11.2.2007 Где: Пироговский Репутация: 2 Всего: 2 |
Хмм, мне казалось, что эти модули подходят про проверки вхождения единичного айпи-адреса в в диапазон. Но не диапазона в список диапазонов. И еще один момент, мне не хотелось бы внедрять в систему дополнительные модули, стараемся сего избегать по возможности. --------------------
It's a nice day to die my friend! |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
GoDleSS, тогда попытайтесь поискать ответ на форуме, при мне такие случаи обсуждались, и там тоже без модуля делали.
|
|||
|
||||
Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
GoDleSS, делал я нечто подобное(правда там не мало делалось на уровне БД, поэтому не думаю что конкретно мои решения в данном случае подойдут, но суть ... ), есть такая функция inet_aton(), по-моему везде под одним и тем же именем идет, преобразовывает из чисел и точек в единое число. На мой взгляд один из оптимальных способов для работы с IP-адресами.
![]() -------------------- менеджер по кодеврайтингу ![]() |
|||
|
||||
DaemonSuw |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 11.3.2008 Репутация: 3 Всего: 3 |
Bulat, вы правы! GoDleSS, вот пример перевода
#!/usr/bin/perl
|
|||
|
||||
GoDleSS |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 11.2.2007 Где: Пироговский Репутация: 2 Всего: 2 |
DaemonSuw, если посмотрите, примерно также и решал задачу перевода, подход чуть другой просто.
Bulat, появились на почве первой задачи еще и дополнительные, там(ради разнообразия) решил как раз с помощью inet_aton/pack/unpack и обратный перевод unpack/inet_ntoa --------------------
It's a nice day to die my friend! |
|||
|
||||
gcc |
|
||||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
© ginnie у вас список чтоли большой очень? разве ip в хэше оно много места занимает? или там много хостов за сутки будут проверять ip? Это сообщение отредактировал(а) gcc - 16.9.2008, 08:10 |
||||
|
|||||
GoDleSS |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 11.2.2007 Где: Пироговский Репутация: 2 Всего: 2 |
Объем порядочный - это задачка для биллинговой системе, заказ под конкретного клиента, а клиент - крупный московский оператор. Просто произошла небольшая несостыковка схемы нашей биллинговой системы и пожеланий оператора, но клиент-то всегда прав =) В целом с задачей разобрался, доведу когда до ума - отпишу.
На данный момент лучшее решение. Это сообщение отредактировал(а) GoDleSS - 16.9.2008, 11:11 --------------------
It's a nice day to die my friend! |
||||
|
|||||
Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
Хм, я тоже когда с биллингом возился, как раз столкнулся с подобного рода задачей, но решал сразу в базе, в MySQL есть одноименная функция. ![]() -------------------- менеджер по кодеврайтингу ![]() |
|||
|
||||
GoDleSS |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 11.2.2007 Где: Пироговский Репутация: 2 Всего: 2 |
1. В базе не стоит по ряду причин(в моем случае) 2. Пользуем Оракл(хотя в нем как раз возможностей навалом) --------------------
It's a nice day to die my friend! |
|||
|
||||
DaemonSuw |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 11.3.2008 Репутация: 3 Всего: 3 |
GoDleSS, извиняюсь просмотрел, и в правду тоже самое)))
gcc, это круто)))
Это сообщение отредактировал(а) DaemonSuw - 16.9.2008, 20:41 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |