![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
Игорь007 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 17.5.2008 Репутация: нет Всего: нет |
Всем привет.
До этого вроде с С (по учебной программе) справлялся, но сейчас дали задание, даже не знаю с какой стороны подойти Нужно обзвонить локальную сеть, после чего вывести отсортированный список компьютеров по времени отзыва. С сортировкой списка понятно, но как взять список компьютеров и время отзыва? Под линухой (Mandriva) на С (хотя можно и Cpp). |
|||
|
||||
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
Посылаем пинг на все адреса сети, которые откликнулись - запоминаем, затем пытаемся получить имя ПК по IP.
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
Игорь007 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 17.5.2008 Репутация: нет Всего: нет |
А откуда адреса сети взять?
|
|||
|
||||
GrayCardinal |
|
|||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
Игорь007,
Берешь твой IP, берешь маску, накладываешь одно на другое, получаешь адреса сети. Ну или типа того. К примеру :
Здесь компы сети - от 192.168.111.1 до 192.168.111.254 Каждый можно, в принципе, пингануть. Я бы сделал тупо коннектом к какому-нибудь "стандартному" порту. (nmap в руки). В данном случае по коду возврата connect (2) можно определить есть хост или нету. Второй вариант - широковещательная UDP на порт, к примеру 7 (echo) (хотя он может и не работать). Т.е. включаем бкаст на UDP сокет и отправляем UDP по адресу (в означенном случае 192.168.111.255 (bcast) )ну и ждем ответа. Третий вариант. Самый тупой - поставить smbclient и делать $ nmblookup "*" - можно получить сразу все IP сети... Вообще ещё вариантов - дофига ![]() ![]() |
|||
|
||||
Graf Zeppelin |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 28.3.2004 Репутация: нет Всего: 1 |
Широковещательный можешь взять. Для IPv4 - 255.255.255.255
--------------------
Jah, help me! |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
GrayCardinal,
все это плохо лучший вариант ICMP echo requests + raw sockets + ioctl() для определения адреса сети ![]() Это сообщение отредактировал(а) MAKCim - 18.5.2008, 16:14 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Игорь007 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 17.5.2008 Репутация: нет Всего: нет |
GrayCardinal, спасибо большое, буду пробовать (вариант с ifconfig eth0 по-моему оптимальный).
А есть какой-нибудь небольшой мануал по работе в Си с ping'ом? |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
ото плохо, т. к всегда есть вероятность, что ifconfig в системе отсутствует стандартный и переносимый вариант - это использование ioctl() + SIOCGIFCONF man ping man 3 system -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
GrayCardinal |
|
|||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
Ты думаешь ему дадут рута ? Ы LOL |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
извини, но ping тоже от рута работает ![]() эта классическая задача на использование ICMP все остальные варианты не стопроцентные Игорь007, если трахаться не хочешь, то
![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Игорь007 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 17.5.2008 Репутация: нет Всего: нет |
MAKCim, и тебе спасибо.
Там, где буду сдавать, он есть. С С++ пока дел не имел, поэтому буду трахаться=) За код сенкс, в крайнем случае им воспользуюсь. |
|||
|
||||
GrayCardinal |
|
|||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
MAKCim,
У пинга сюид рут стоит. |
|||
|
||||
Игорь007 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 17.5.2008 Репутация: нет Всего: нет |
Прогресс небольшой есть.
Теперь проблема - как взять результаты пинга? system(ping ...) выдаёт нулевое значение. |
|||
|
||||
MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
и что? ![]() кстати, для создания raw-сокетов рут не обязателен достаточно CAP_NET_RAW Добавлено через 3 минуты и 49 секунд
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
GrayCardinal |
|
|||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
MAKCim,
А то что не получится у него рав сокеты использовать ![]() Игорь007, Заюзай popen(3). С него читаешь первые две строчки пинга. $ ping -c 1 <IP> Там и ttl и время ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |