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

автор evteev, Янв.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;
}


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

Комментировать :,

Комментирование закрыто.



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

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



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

Все о программировании - языки программирования скачать

Все о программировании

  • языки программирования
  • php программирование
  • программирование C++
  • программирование на java
  • язык программирования java
  • программирование на delphi
  • программирование на pascal
  • купить программы программирования
  • язык программирования assembler
  • языки программирования скачать
  • скачать языки программирования

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

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