Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - Список устойств в домашней сети

Ответить
Настройки темы
Разное - Список устойств в домашней сети

Пользователь


Сообщения: 62
Благодарности: 0

Профиль | Отправить PM | Цитировать


С помощью какой функции или связки функций можно получить список устройств которые на
данный момент времени присутствуют в твоей (домашней) сети

Может быть я не правильно ставлю вопрос но под устройствами я имею ввиду
например телевизор (с DLNA примочкой) который в данный момент времени включен
и ждёт когда с ним будет работать медиасервер установленный на компьютере

Информация об устройстве типа - (Название, Ip-адрес, MAC-адрес, Тип устойства)
Эту иформацию конечно можно посмотреть и в самом медиасервере если например нажать
там на опцию поиска устройств и он выдаст список клиентов

Вопрос как програмно он это делает
Если кто в теме подскажите пожалуйста

Отправлено: 19:49, 13-01-2014

 

Пользователь


Сообщения: 62
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar 1.rar
(3.4 Kb, 1 просмотров)

Функция 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;
}
В примере поиск идёт 50 циклов (переменная - dwAdr = 50)
до адреса - 192.168.0.50
Такой алгоритм для поиска конечно очень медленный
да и к тому же тип и название ресурса я пока тоже не знаю как определить.

Может кто знает как можно побыстрее сделать поиск?
и название ресурса с типом как ещё можно определить?

Отправлено: 12:34, 15-01-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата assch:
Может кто знает как можно побыстрее сделать поиск? »
Отдельными потоками.

Отправлено: 13:46, 15-01-2014 | #3


Пользователь


Сообщения: 62
Благодарности: 0

Профиль | Отправить PM | Цитировать


Попробую

Отправлено: 15:32, 15-01-2014 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - Список устойств в домашней сети

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочее - Создание домашней сети 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




 
Переход