Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.09.2010, 20:47
Аватар для adidas
adidas adidas вне форума
Новичок
 
Регистрация: 24.03.2008
Адрес: Украина
Сообщения: 61
Версия Delphi: XE
Репутация: 10
По умолчанию IP-адрес и промежуток

Здрасте! Есть промежуток 46.29.8.0 - 46.29.15.255. Как узнать входит ли данный IP-адрес 46.29.9.245 в промежуток, который указан выше??? Заранее спасибо.
Ответить с цитированием
  #2  
Старый 10.09.2010, 22:33
Аватар для Bars1992
Bars1992 Bars1992 вне форума
Активный
 
Регистрация: 24.04.2010
Адрес: Украина, Кременчуг
Сообщения: 249
Репутация: 22
По умолчанию

Переводишь айпи адрес в целое число например 255.254.253.1=1+253*10+254*100+255*1000 . Так же переводишь и второй айпи. Переводишь тот айпи который надо узнать и проверяешь лежит ли он между двумя заданамми
__________________
Не твори зла, и жизнь повернется к тебе передом
Ответить с цитированием
  #3  
Старый 11.09.2010, 01:03
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Неработает твой алгоритм, получается что айпи 46.29.16.200 лежит в диапозоне указанным выше, и откуда ты взял этот метод?
Ответить с цитированием
  #4  
Старый 11.09.2010, 05:54
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,030
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Правильно не работает.
На самом деле тебе просто достаточно перевести это дело в Long. Тогда сработает. Ну или как-то так:
p1*256^3 + p2*256^2 + p3^256 + p4,
где 46.29.16.200: p1 = 46, p2 = 29, p3 = 16, p4 = 200.
Если у тебя уже есть 4 байта, то код будет такой:
Код:
function IP2Long(b1,b2,b3,b4 : Byte) : Integer;
begin
  Result := b1;
  Result := (Result Shl 8) + b2;
  Result := (Result Shl 8) + b3;
  Result := (Result Shl 8) + b4;
end;
Ответить с цитированием
  #5  
Старый 11.09.2010, 19:20
Аватар для Bars1992
Bars1992 Bars1992 вне форума
Активный
 
Регистрация: 24.04.2010
Адрес: Украина, Кременчуг
Сообщения: 249
Репутация: 22
По умолчанию

lmikle второй раз забываю про ограничения integer
__________________
Не твори зла, и жизнь повернется к тебе передом
Ответить с цитированием
  #6  
Старый 11.09.2010, 20:24
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,030
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Да у тебя в другом проблема. Тебе надо сдвигать каждый байт IP адреса на 3 позиции, а ты сдвигаешь на 1 (в десятичном исчислении). Вот оно неправильно и работает. Хотя идея-то правильная.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:59.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter