Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
68 / 25 / 7
Регистрация: 13.01.2014
Сообщений: 106
1

Список устойств в домашней сети

13.01.2014, 19:44. Показов 1199. Ответов 1
Метки нет (Все метки)

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

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

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

Вопрос как програмно он это делает
Если кто в теме подскажите пожалуйста
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.01.2014, 19:44
Ответы с готовыми решениями:

Настройки домашней локальной сети и сети интернет
Здравствуйте! Недавно приобрел wi-fi роутер, но роутер не обычный, на нем только один порт...

Вирусы в домашней сети
Добрый вечер всем! Провайдер закрыл 25 порт, потребовал проверки всех компов на вирусы. В домашней...

Создание домашней сети
Как мне настроить домашнюю сеть (чтобы играть в играх по локальной сети)? У меня ноутбук и...

Администрирование домашней сети!
Здраствуйте, возникла проблема администрирования сети.Сеть домашняя. В сети 2 компьютера:...

1
68 / 25 / 7
Регистрация: 13.01.2014
Сообщений: 106
15.01.2014, 12:37  [ТС] 2
Лучший ответ Сообщение было отмечено assch1 как решение

Решение

Функция SendARP() дала небольшие результаты.
Она по айпи адресу может выдать его мак адрес.
Я сделал функцию которая как бы просматривает локальную сеть на предмет
подключённых устойств. В принципи эту функцию можно расматривать как первый
шаг в развёрнутой мною теме.

Алгоритм функции:

В цикле идёт подстановка айпи адресов (256 циклов)
начиная с адреса - 192.168.0.0 до 192.168.0.255
и соответственно если нет ошибки то это задействованный на данный
момент времени айпи адрес в сети и функция находит мак адрес к нему.
Поиск идёт медленно примерно секунда цикл.

Код C++

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#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
Такой алгоритм для поиска конечно очень медленный
да и к тому же тип и название ресурса я пока тоже не знаю как определить.

Может кто знает как можно побыстрее сделать поиск?
и название ресурса с типом как ещё можно определить?
Вложения
Тип файла: rar 1.rar (3.4 Кб, 14 просмотров)
0
15.01.2014, 12:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2014, 12:37
Помогаю со студенческими работами здесь

Создание домашней сети
Пытался безуспешно настроить домашнюю сеть из компьютера под управлением ОС Windows XP Service Pack...

КПК в домашней сети по wi-fi
Здравствуйте. Имею домашнюю сеть с интернетом из трёх компьютеров. Купил себе КПК. Хочу подключить...

Создание домашней сети
Здравствуйте, возник вопрос, как объединить компьютер, который подключён к роутеру по кабелю с...

Конфигурация домашней сети
Добрый день, подскажите как правильно организовать домашнюю сеть в загородном доме(два этажа ~по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru