Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как определить свой IP, .... 
:(
    Опции темы
Palmman
  Дата 15.4.2003, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 14.4.2003

Репутация: нет
Всего: нет



Требуется определить IP адрес, с последующем определением MAC
hostent* phst;

phst = gethostbyname("localhost");
ipAddr = inet_addr(phst->h_addr_list[0]);

А вот тут не потятно что сделать;

hr = SendARP (ipAddr, 0, pulMac, &ulLen);
PM MAIL   Вверх
Baa
Дата 15.4.2003, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



Код

//
// Link with ws2_32.lib and iphlpapi.lib
//

#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include <iphlpapi.h>


int __cdecl main()
{
   HRESULT hr;
   IPAddr  ipAddr;
   ULONG   pulMac[2];
   ULONG   ulLen;

   ipAddr = inet_addr ("216.145.25.31");
   memset (pulMac, 0xff, sizeof (pulMac));
   ulLen = 6;
   
   hr = SendARP (ipAddr, 0, pulMac, &ulLen);
   printf ("Return %08x, length %8d\n", hr, ulLen);
   
   size_t i, j;
   char * szMac = new char[ulLen*3];
   PBYTE pbHexMac = (PBYTE) pulMac;

   //
   // Convert the binary MAC address into human-readable
   //
   for (i = 0, j = 0; i < ulLen - 1; ++i) {
       j += sprintf (szMac + j, "%02X:", pbHexMac[i]);
   }
   
   sprintf (szMac + j, "%02X", pbHexMac[i]);
   printf ("MAC address %s\n", szMac);
   
   delete [] szMac;

   return 0;
}



--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Baa
Дата 15.4.2003, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



Развивая твой код можно придти к такому...
Код

Развивая твой код можно придти к такому...
[CODE]
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include <iphlpapi.h>
#include <Winsock2.h>

#pragma comment (lib, "Ws2_32.lib")
#pragma comment (lib, "iphlpapi.lib")
int __cdecl main()
{
HRESULT hr;
IPAddr  ipAddr;
ULONG   pulMac[2];
ULONG   ulLen;

WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 2, 2 );

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
 /* Tell the user that we could not find a usable */
 /* WinSock DLL.                                  */
 return 0;
}

if ( LOBYTE( wsaData.wVersion ) != 2 ||
 HIBYTE( wsaData.wVersion ) != 2 ) {
  /* Tell the user that we could not find a usable */
  /* WinSock DLL.                                  */
  WSACleanup( );
  return 0;
 }


hostent* phst;
phst = gethostbyname(NULL);

char szIPAddr[17];
strcpy(szIPAddr,inet_ntoa(*((in_addr*)phst->h_addr_list[0])));
ipAddr = inet_addr (szIPAddr);
memset (pulMac, 0xff, sizeof (pulMac));
ulLen = 6;

hr = SendARP (ipAddr, 0, pulMac, &ulLen);
printf ("Return %08x, length %8d\n", hr, ulLen);

size_t i, j;
char * szMac = new char[ulLen*3];
PBYTE pbHexMac = (PBYTE) pulMac;

//
// Convert the binary MAC address into human-readable
//
for (i = 0, j = 0; i < ulLen - 1; ++i) {
 j += sprintf (szMac + j, "%02X:", pbHexMac[i]);
}

sprintf (szMac + j, "%02X", pbHexMac[i]);
printf ("MAC address %s\n", szMac);

delete [] szMac;
WSACleanup();
return 0;
}



--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
man2002ua
Дата 15.4.2003, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 943
Регистрация: 12.11.2002
Где: Киев

Репутация: нет
Всего: 2



Кстати, SendARP работает только от 2000 и выше.
Лично я использовал функцию Netbios (для 98 и NT).


--------------------
"Нет ничего более постоянного, чем временное"
PM MAIL   Вверх
Dicobraz
Дата 27.6.2003, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 26.3.2002
Где: Пермь

Репутация: нет
Всего: нет



man2002ua
слушай, если не трудно, скинь мне на мыло, как это. а то уже заколебался разбираться с этим netbios'ом!

[email protected]
PM MAIL ICQ   Вверх
Тупик
Дата 7.6.2005, 21:11 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Не могу запустить прогу с функцией GetAdaptersInfo, вечно нехватает какого-нибудь ... .h файла! smile
  Вверх
_hunter
Дата 8.6.2005, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



вечно -- это значит что их больше одного?
http://msdn.microsoft.com/library/default....daptersinfo.asp


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0442 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.