Функция
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
Такой алгоритм для поиска конечно очень медленный
да и к тому же тип и название ресурса я пока тоже не знаю как определить.
Может кто знает как можно побыстрее сделать поиск?
и название ресурса с типом как ещё можно определить?