Как узнать IP и MAC адрес своего компьютера на C++

автор , Янв.04, 2010, рубрики C/C++/C#

Как узнать IP и MAC адрес моего компа в сети на C++

Для определения мы будем пользоваться функциями gethostname и gethostbyname из библиотеки winsock.h. Если у вас два и более сетевых подключений, программа покажет IP адрес первого в очереди.

#include <winsock.h>
#include <windows.h>

int main (int argc, char* argv[])
{
const int WSVer = 0×101;
WSAData wsaData;
hostent *h;
char Buf[128];
if (WSAStartup (WSVer, &wsaData) == 0)
{
if (gethostname (&Buf[0], 128) == 0)
{
h = gethostbyname (&Buf[0]);
if (h != NULL) MessageBox (0,inet_ntoa (*(reinterpret_cast<in_addr *>(*(h->h_addr_list)))),0,0);
else MessageBox (0,"Вы не в сети. �? IP адреса у вас нет.",0,0);
}
WSACleanup;
}
return 0;
}

Также можно воспользоваться WinAPI функцией GetAdaptersInfo. Она тебе вернет информацию по всем сетевым адаптерам системы.WinAPI фукнции очень полезная вещь, рекомендую тебе почаще листать справочник.

Узнать MAC адрес можно как предыдущим способом, с помощью GetAdaptersInfo. Но также и другим:

#include <stdio.h>
#include <windows.h>
#include <Winsock2.h>
#include <Iphlpapi.h>

///-------- cpp-файл ----------

#include «stdafx.h»
char ip[]="192.168.100.1";

int main (int argc, char* argv[])
{
//Будем использовать сокеты
WSADATA WsaData;
DWORD _ip=inet_addr (ip);
if (WSAStartup (0×0202, &WsaData)==NULL)
printf («WSA Starup OK!\n»);

//Создаём UDP-сокет и отсылаем по нему любые данные
SOCKET udp_s;
SOCKADDR_IN udp_sin;
udp_s=socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (udp_s!=SOCKET_ERROR)
{
udp_sin.sin_family = AF_INET;
udp_sin.sin_port = htons (5232); //Шлём на любой порт.
udp_sin.sin_addr.s_addr = _ip;
if (sendto (udp_s, «TEST», 5, NULL, (SOCKADDR*)&udp_sin, sizeof (udp_sin))>0)
{ //Пакет отослан. Вытаскиваем MAC-адрес из системы
MIB_IPNETTABLE * pIpNetTable = (MIB_IPNETTABLE *) new char[0xFFFF];
ULONG cbIpNetTable = 0xFFFF;
if (NO_ERROR == GetIpNetTable (pIpNetTable, &cbIpNetTable, TRUE))
{
for (DWORD i = 0; i < pIpNetTable->dwNumEntries; i++)
{
if (pIpNetTable->table[i].dwAddr == _ip&&pIpNetTable->table[i].dwType != 2)
{
printf («IP:%s MAC:%X-%X-%X-%X-%X-%X\n», ip,
pIpNetTable->table[i].bPhysAddr[0],
pIpNetTable->table[i].bPhysAddr[1],
pIpNetTable->table[i].bPhysAddr[2],
pIpNetTable->table[i].bPhysAddr[3],
pIpNetTable->table[i].bPhysAddr[4],
pIpNetTable->table[i].bPhysAddr[5]);
delete[] pIpNetTable;
closesocket (udp_s);
WSACleanup ();
return 0;
}
}
printf («MAC-address not found\n»);
delete[] pIpNetTable;
}
else printf («ERROR Open IPMAC table\n»);
}
else printf («Send data ERROR!\n»);

closesocket (udp_s);
}
else printf («ERROR open socket\n»);

WSACleanup (); //Освобождаем ресурсы
return 0;
}


Мой блог находят по следующим фразам

:,


Что-то ищите?

Используйте форму для поиска по сайту:



Все еще не можете что-то найти? Оставьте комментарий или свяжитесь с нами, тогда мы позаботимся об этом!

Ключевые слова нашего блога

  • Ускорение windows xp
  • Активация windows xp
  • Виндовс XP
  • Оптимизация windows xp
  • Активировать windows xp
  • Активация виндовс xp
  • Активация windows xp sp3
  • Скачать windows xp sp3
  • Настройка windows xp
  • Тонкая настройка windows xp

Архив сообщений

Все вхождения, в хронологическом порядке...