Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C++ Builder > как получить все адреса для сети? |
Автор: zhz 21.1.2007, 04:32 |
собственно, есть ip адрес и маска, формат задания маски для удобства неограничен, но думаю лучше ввиде /24 например. Хотелось получить хоть кусочек кода который получает все ip адреса для заданной сети. |
Автор: stmamont 22.1.2007, 01:28 | ||
наверное надо просто перебрать все адреса и пропинговать их Добавлено @ 01:35 например у компонента TIdRowClient есть метод Ping то есть
все это есть в справке билдера. смотри |
Автор: zhz 22.1.2007, 02:34 |
неееееее, мне совсем не то надо! мне надо написать функцию которая бы получала все адреса для заданной сети, и все! например, я передаю в функцию два параметра, адрес сети(например 192.168.10.0) и маску(не важног в каком виде) - например /24 и функция должна вывести мне все возможные адреса: 192.168.10.1 192.168.10.2 192.168.10.3 ..................... ..................... ..................... ..................... 192.168.10.254 Все просто на этом примере, понятия не имею как делать когда маска будет например /26 или /18 |
Автор: AntonChik 22.1.2007, 10:20 |
ну так и делай... перебирай все адреса (0...255) и сравнивай каждый поразрядно конъюктивно с маской... проблемы с двоичными числами? |
Автор: zhz 22.1.2007, 11:12 |
вот если бы я знал что это значит, то и не создовал бы тему.... маску /24 я для примера привел, сам понимаю что в этом диапазоне и считать то нечего (001-254), но маска то может быть и /26 например, и вот тут вообще не знаю как посчитать, ну тоесть могу на бумажке с калькулятором посчитать, а как функцию надолбить, не знаю |
Автор: stmamont 22.1.2007, 12:14 |
объясни только что такое /24 и /26 и я скажу как это сделать) |
Автор: zhz 22.1.2007, 12:22 |
Значит так. IP - адрес сети с маской 24 записывается как 192.168.48.0/24 где 24 бита отводится для адреса сети 11000000.10101000.00110000.00000000 и 8 бит (32-24) отводится для адреса хоста 11000000.10101000.00110000.00000000 маска 255.255.255.0 Адреса начинаются с адреса 11000000.10101000.00110000.00000000 192.168.48.0 а заканчиваются адресом 11000000.10101000.00110000.11111111 192.168.48.255 Первый обозначает сеть 192.168.48.0, а последний broadcast 192.168.48.255 и эти два адреса мы не учитываем. Значит, диапазон будет от 11000000.10101000.00110000.00000001 до 11000000.10101000.00110000.11111110 или 192.168.48.1 – 192.168.48.254 /24 и /26 это количество бит айпи адреса отводимое для адресации сети, |
Автор: Grom 22.1.2007, 15:43 |
zhz, а если маска 192.168.48.0/26 ? то 10 бит под адрес узла сети. а 10 бит это как будет ? 11000000.10101000.00110000.00000000 так чтоли ? объясни или дай линк где поподробней почитать.. всегда интересовался но ничего толкового не встречал. |
Автор: GIK 22.1.2007, 16:13 | ||
точно, а алгоритм напишем быстро ![]() |
Автор: stmamont 22.1.2007, 16:56 | ||||
а я понял значит так если у тебя есть какая то маска то ты смотришь сколько у тебя битов свободных т.е. 8 или 6
Добавлено @ 16:58 если отсчет идет так 11000000.1 0 1 0 1 0 0 0 .00110000.11111110 87654321.161514131211109 .... Добавлено @ 16:59 если нет то а наоборот то
|
Автор: zhz 22.1.2007, 17:06 |
Для общего развития всех перцев этого форума, понятия не имеющих что такое IP - адресация, соорудил man. Надеюсь пригодится....![]() кому понравится, могут плюсик поставить ![]() Добавлено @ 17:14 а это что значит ![]() |
Автор: GIK 22.1.2007, 17:39 | ||||||
В смысле любой тип данных что ли? Что-то типа:
Это побитовые операции: 1) операция << - сдвиг влево например (1 << 8) = 00000000 00000001 << 8 = 00000001 00000000 все биты смещаются влево 2) операция | (побитовое или) например 3 | 1 = 00000011 | 00000001 = 00000011 если хотябы один бит имеет значение "единичка", то в результате единичка сохраняется |
Автор: GIK 22.1.2007, 21:29 | ||
zhz, блин, супер, спасибо за ман, давно хотел разузнать про IP адресацию.
Это не то что тебе надо, но принцип тоже, что ты и хотел увидеть. Очень мне интересно стало, хочу еще больше узнать что и как, и в каком формате, и куда передается информация о IP. Народ присоединяйся, делитесь инфой кто че знает ![]() |
Автор: Grom 23.1.2007, 11:34 |
zhz, спасибо. отличный ман. ! |
Автор: Bima 23.1.2007, 16:54 |
Вот пример, который ты просил. Данные заносятся в ListBox. Ничего сложного, я думал, ты сам бы сделал, причем все исходные данные у тебя были. |
Автор: Bima 24.1.2007, 06:53 |
не видел! но переделать пример, относительно маски меньше 24, дело 2 минут. Алгоритм тот же, только придется добавитьеще один цикл по старшим битам маски. |
Автор: stmamont 24.1.2007, 13:24 |
вообще в builder int - 4 байтовый тоесть весь ip можно запихать в intи соответственно маску и не придется делать никаких дополнительных циклов))) все сделается оченб просто в один цикл)) |
Автор: TiKKi 24.1.2007, 19:01 | ||
Так ?
Надо еще проверки учесть |
Автор: stmamont 24.1.2007, 22:43 | ||
как то лишком замутно. я бы сделал проще
|
Автор: TiKKi 25.1.2007, 04:12 | ||||
Чего замутного? Комментарии не написал, т.к. поздно было, спать хотел. Вот с комментариями:
|
Автор: stmamont 25.1.2007, 17:07 |
TiKKi, нет смысл мне понятен. но можно поступить легче мой код покороче и попроще будет) |
Автор: TiKKi 25.1.2007, 17:54 |
спорить не буду, мне и свой и твой вариант нравится ![]() |