![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| AndAnd |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 22.7.2006 Репутация: 1 Всего: 1 |
Здраствуйте все! Помогите со сравнением IP адреса.Пользуюсь структурой IN_ADDR в ней есть параметр s_addr типа U_long.
Допустим есть 2-а IP адреса: 192,112,128,0 и 192,112,140,250 как их сравнить. Используя параметр s_addr может быть так что он будет больше другого IP-ишника, хотя это не так , если смотреть его в формате IPv4. И вообще что показывает этот параметр и как получается его значение. Но главный вопрос как всё же сравнить Ip-адреса между собой на больше меньше. |
|||
|
||||
| jonie |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
понятие больше меньше для адресов IP имхо непримелимо 8) это просто адресс...
http://ru.wikipedia.org/wiki/IP-адрес
Это сообщение отредактировал(а) jonie - 7.10.2007, 22:00 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||
|
|||||
| AndAnd |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 22.7.2006 Репутация: 1 Всего: 1 |
Не согласен. Задаются же диапазоны IP-адресов в порядке возрастания. я ни разу не видел, например такой записи диапазонов: 192,112,128,255 - 192,112,101,004? ведь всё равно эти IP можно сравнить, например сначала по 3-ему октету, а затем уже по четвёртому и.т.д.
там всё в общих чертах и так мне известных. меня интересует реализация на языке программирования... |
||||
|
|||||
| Vasay |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2097 Регистрация: 8.3.2006 Репутация: нет Всего: 73 |
получаем long из строки и сравниваем, или имелось ввиду что-то другое?
-------------------- Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны. |
|||
|
||||
| korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 9 Всего: 14 |
Можете воспользоватся такими макросами для выделения нужных байт ip-адреса
дальше побайтное сравнение. -------------------- korbian © |
|||
|
||||
| EnergoHokum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 600 Регистрация: 10.11.2006 Где: Россия, Ставропол ь Репутация: 3 Всего: 6 |
А может, проще будет тупо поXORить их в цикле?
|
|||
|
||||
| korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 9 Всего: 14 |
а тогда как определить какой ip "больше"\"меньше"? -------------------- korbian © |
|||
|
||||
| Dude03 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 28.4.2006 Репутация: 1 Всего: 6 |
Выводит:
Это сообщение отредактировал(а) Dude03 - 8.10.2007, 16:00 |
||||
|
|||||
| GrayCardinal |
|
|||
|
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: нет Всего: 58 |
AndAnd,
Берётся маска сети, инвертируется, и по AND с каждым адресом. Оставшиеся байты сравниваются... Усё. Добавлено @ 17:25 Я к тому, что просто адрес сравнивать, конечно, нельзя. А вот если по маске они одинаковые, то AND по инвертированной маске - есть номер компа в сети, который, собственно и сравнивается... Добавлено через 10 минут и 29 секунд А вообще, можно и так сравнить, при нужде Это сообщение отредактировал(а) GrayCardinal - 8.10.2007, 17:25 |
|||
|
||||
| AndAnd |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 22.7.2006 Репутация: 1 Всего: 1 |
GrayCardinal, как я узнаю какая маска сети у IP-адреса?
Может я не полностью раскрыл свой вопрос. Вобщем, у меня есть список диапазонов адресов, который я заполняю сам. При добавлении нового диапазона, мне необходимо сравнить его с уже существующими в списке, на то чтобы новый диапазон не входил в существующие или не охватывал их. Ну и там ещё надо будет дальше сравнивать поштучно IP-ики на принадлежность к каждому из диапазонов и производить свои вычисления. Мне бы хотелось всё же понять какой способ из вышеперечисленных будет самым простым и одновременно надёжным... GlobalVar.h
StdAfx.cpp
Это сообщение отредактировал(а) AndAnd - 8.10.2007, 17:37 |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |