Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проверить принадлежность ip к диапазону, как? 
V
    Опции темы
sw04
  Дата 23.3.2007, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 372
Регистрация: 22.1.2007
Где: Ufa

Репутация: нет
Всего: 18



Делаю разделение трафика на локальный и внешний.
Локальные есть пару диапазонов (пример 10.0.0.0-10.255.255.255), а остальные отнести к внешнему. 
Разделяю по source ip , но как проверить принадлежит ли данный ip к локальным или внешним?

Это сообщение отредактировал(а) sw04 - 23.3.2007, 22:40


--------------------
<удалено администрацией>
PM   Вверх
Snowy
Дата 23.3.2007, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Функция inet_addr переводит текстовое представление адреса в 4-байтное значение.
Вот его уже можешь свокойно сравнивать.
PS. uses WinSocks;

Добавлено 
А... Забыл сказать. Порядок байт обратный. То есть их ещё развернуть нужно наоборот.
PM MAIL   Вверх
Snowy
Дата 23.3.2007, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Ндя. Лучше пример дам...
Код

uses WinSock;

function IpToInt(ip: string): dword; // превращаем IP в число
begin
  result := inet_addr(PChar(ip));
  result := (result shl 24) or (result and $FF00 shl 8) or
            (result and $FF0000 shr 8) or (result shr 24);
end;

function IpInRange(min, max, ip: string): boolean; // передаём минимум, максимум и IP. На выходе: входит или нет
var i: dword;
begin
  i := IpToInt(ip);
  result := (i >= IpToInt(min)) and (i <= IpToInt(max));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if IpInRange('10.0.0.0', '10.255.255.255', '10.0.11.13') then
    ShowMessage('Ага. Входит')
  else ShowMessage('Неа. Не входит');
end;

PM MAIL   Вверх
sw04
Дата 23.3.2007, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 372
Регистрация: 22.1.2007
Где: Ufa

Репутация: нет
Всего: 18



Спасибо!

зы не мешало бы добавить в drkb, т.к. подобного примера не было, но он достаточно полезен.


--------------------
<удалено администрацией>
PM   Вверх
Snowy
Дата 23.3.2007, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Всегда пожалуйста.
Я немного поправил исходник - заменил integer на dword.
integer не страбоатет на адресах выше 127. А это стандартные локальные адреса первого и второго подуровня - 172 и 192.
С dword всё корректно на любых адресах.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.