| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Как сравнить IP-адреса |
| Автор: AndAnd 7.10.2007, 19:45 |
| Здраствуйте все! Помогите со сравнением IP адреса.Пользуюсь структурой IN_ADDR в ней есть параметр s_addr типа U_long. Допустим есть 2-а IP адреса: 192,112,128,0 и 192,112,140,250 как их сравнить. Используя параметр s_addr может быть так что он будет больше другого IP-ишника, хотя это не так , если смотреть его в формате IPv4. И вообще что показывает этот параметр и как получается его значение. Но главный вопрос как всё же сравнить Ip-адреса между собой на больше меньше. |
| Автор: jonie 7.10.2007, 21:59 | ||||
понятие больше меньше для адресов IP имхо непримелимо 8) это просто адресс...
http://ru.wikipedia.org/wiki/IP-адрес
|
| Автор: AndAnd 8.10.2007, 02:35 | ||||
Не согласен. Задаются же диапазоны IP-адресов в порядке возрастания. я ни разу не видел, например такой записи диапазонов: 192,112,128,255 - 192,112,101,004? ведь всё равно эти IP можно сравнить, например сначала по 3-ему октету, а затем уже по четвёртому и.т.д.
там всё в общих чертах и так мне известных. меня интересует реализация на языке программирования... |
| Автор: Vasay 8.10.2007, 03:46 | ||
получаем long из строки и сравниваем, или имелось ввиду что-то другое?
|
| Автор: korbian 8.10.2007, 10:00 | ||
Можете воспользоватся такими макросами для выделения нужных байт ip-адреса
дальше побайтное сравнение. |
| Автор: EnergoHokum 8.10.2007, 15:03 |
| А может, проще будет тупо поXORить их в цикле? |
| Автор: korbian 8.10.2007, 15:49 |
а тогда как определить какой ip "больше"\"меньше"? |
| Автор: GrayCardinal 8.10.2007, 17:16 |
| AndAnd, Берётся маска сети, инвертируется, и по AND с каждым адресом. Оставшиеся байты сравниваются... Усё. Добавлено @ 17:25 Я к тому, что просто адрес сравнивать, конечно, нельзя. А вот если по маске они одинаковые, то AND по инвертированной маске - есть номер компа в сети, который, собственно и сравнивается... Добавлено через 10 минут и 29 секунд А вообще, можно и так сравнить, при нужде |
| Автор: AndAnd 8.10.2007, 17:35 | ||||
| GrayCardinal, как я узнаю какая маска сети у IP-адреса? Может я не полностью раскрыл свой вопрос. Вобщем, у меня есть список диапазонов адресов, который я заполняю сам. При добавлении нового диапазона, мне необходимо сравнить его с уже существующими в списке, на то чтобы новый диапазон не входил в существующие или не охватывал их. Ну и там ещё надо будет дальше сравнивать поштучно IP-ики на принадлежность к каждому из диапазонов и производить свои вычисления. Мне бы хотелось всё же понять какой способ из вышеперечисленных будет самым простым и одновременно надёжным... GlobalVar.h
StdAfx.cpp
|