C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
arp -a, получить список
bacho_sun
  Отправлено: 12.11.2005, 16:56


Дежурный стрелочник

Группа: Участник
Сообщений: 33



Ребята кто в курсе есть ли какой нибудь — бесплатный компонент для Builder C++ 6.0 ( а может это есть в Builder) , который позволит получить список
ARP таблицы ,
как
arp -a
или еще как это сделать — если нет такого компонента — не используя dos овские комманды.
AVC
Отправлено: 14.11.2005, 15:06


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE
как это сделать — если нет такого компонента — не используя dos овские комманды

CODE

#include <IPHlpApi.h>
// + Project -> Add to project -> добавлена библиотека ...\PSDK\IPHlpApi.lib

void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
unsigned long size = 0;
GetIpNetTable(NULL, &size, false);
if (size == 0) return;

AnsiString recTypes[] = {"", "other", "invalid", "dynamic", "static"};

MIB_IPNETTABLE* pIpNetTable = (MIB_IPNETTABLE*) new char[size];

if (GetIpNetTable(pIpNetTable, &size, true) == NO_ERROR)
{ AnsiString              text;
  MIB_IPNETROW*   rec;
  for (int i(0); i < pIpNetTable->dwNumEntries; i++)
   { rec = &pIpNetTable->table[i];
     text += AnsiString("")  +
             AnsiString(int(rec->dwIndex)) + ":  " +
             AnsiString(int((rec->dwAddr >>  0) & 0xFF)) + "."   +
             AnsiString(int((rec->dwAddr >>  8) & 0xFF)) + "."   +
             AnsiString(int((rec->dwAddr >> 16) & 0xFF)) + "."   +
             AnsiString(int((rec->dwAddr >> 24) & 0xFF)) + "   ";
     for(int j(0); j < rec->dwPhysAddrLen; j++)
       text += IntToHex(rec->bPhysAddr[j], 2) + ".";

     text += recType[int(rec->dwType)] + "\n";
   }
  ShowMessage(text);
}

delete [] pIpNetTable;
}


Вернуться в Вопросы программирования в C++Builder