|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - Список устойств в домашней сети |
|
Разное - Список устойств в домашней сети
|
Пользователь Сообщения: 62 |
С помощью какой функции или связки функций можно получить список устройств которые на
данный момент времени присутствуют в твоей (домашней) сети Может быть я не правильно ставлю вопрос но под устройствами я имею ввиду например телевизор (с DLNA примочкой) который в данный момент времени включен и ждёт когда с ним будет работать медиасервер установленный на компьютере Информация об устройстве типа - (Название, Ip-адрес, MAC-адрес, Тип устойства) Эту иформацию конечно можно посмотреть и в самом медиасервере если например нажать там на опцию поиска устройств и он выдаст список клиентов Вопрос как програмно он это делает Если кто в теме подскажите пожалуйста |
|
Отправлено: 19:49, 13-01-2014 |
Пользователь Сообщения: 62
|
Профиль | Отправить PM | Цитировать Функция SendARP() дала небольшие результаты.
Она по айпи адресу может выдать его мак адрес. Я сделал функцию которая как бы просматривает локальную сеть на предмет подключённых устойств. В принципи эту функцию можно расматривать как первый шаг в развёрнутой мною теме. Алгоритм функции: В цикле идёт подстановка айпи адресов (256 циклов) начиная с адреса - 192.168.0.0 до 192.168.0.255 и соответственно если нет ошибки то это задействованный на данный момент времени айпи адрес в сети и функция находит мак адрес к нему. Поиск идёт медленно примерно секунда цикл. Код C++ #undef UNICODE #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include <winsock2.h> #include <iphlpapi.h> #include <stdio.h> #include <stdlib.h> #include <iostream> using namespace std; #pragma comment(lib, "iphlpapi.lib") // Функция - SendARP #pragma comment(lib, "ws2_32.lib") // Функции - inet_addr , inet_ntoa int main (void) { DWORD dwRetVal; IPAddr DestIp; IPAddr SrcIp = 0; ULONG MacAddr[3]; ULONG PhysAddrLen; BYTE *bPhysAddr; int dwCol = 0; int dwAdr; unsigned int i; unsigned int p; struct sockaddr_in addr; DestIp = inet_addr("192.168.0.0"); dwAdr = 50; for (p = 0; p < dwAdr; p++) { addr.sin_addr.s_addr = DestIp; printf("%s \t", inet_ntoa(addr.sin_addr)); PhysAddrLen = 6; dwRetVal = SendARP(DestIp, SrcIp, &MacAddr, &PhysAddrLen); if (dwRetVal == NO_ERROR) { dwCol++; bPhysAddr = (BYTE *) & MacAddr; if (PhysAddrLen) { for (i = 0; i < (int) PhysAddrLen; i++) { if (i == (PhysAddrLen - 1)) printf("%.2X\n", (int) bPhysAddr[i]); else printf("%.2X-", (int) bPhysAddr[i]); } } } else { printf("\n"); } DestIp += 16777216; } //=========================================================== char pTxt[100]; char pCol[100]; wsprintf(pCol,"%u",dwCol); lstrcpy(pTxt,"Количество найденных адресов - "); lstrcat(pTxt,pCol); lstrcat(pTxt," "); MessageBox(0,pTxt," ",32); //=========================================================== //cin.get(); return 0; } до адреса - 192.168.0.50 Такой алгоритм для поиска конечно очень медленный да и к тому же тип и название ресурса я пока тоже не знаю как определить. Может кто знает как можно побыстрее сделать поиск? и название ресурса с типом как ещё можно определить? |
Отправлено: 12:34, 15-01-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата assch:
|
|
Отправлено: 13:46, 15-01-2014 | #3 |
Пользователь Сообщения: 62
|
Профиль | Отправить PM | Цитировать Попробую
|
Отправлено: 15:32, 15-01-2014 | #4 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Прочее - Создание домашней сети | SLIMYS | Сетевые технологии | 2 | 26-07-2013 22:00 | |
Прочее - Настройка домашней сети и подключение 2-х компьютеров к сети Интернет | zelen | Сетевые технологии | 14 | 03-04-2012 22:31 | |
2008 - оганизация домашней сети | garic3000 | Windows Server 2008/2008 R2 | 2 | 26-02-2010 19:56 | |
Настройка домашней сети | RENSKI | Сетевые технологии | 1 | 17-11-2003 12:12 | |
Список компов в сети? Список открытых папок на компе? | DANTIST | Программирование и базы данных | 3 | 12-06-2003 10:05 |
|