Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2009, 08:56   #1
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию Узнать mac + ip

Как узнать mac+ip машин в сети...

т.е. есть машина 1

ей нужно опросить в сети машинки по указному диапазону ip.

и выдать

ip mac
ip mac
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 21.07.2009, 10:22   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Если все компьютеры находятся в одном сегменте, то Ping+ arp-a вам помогут.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 21.07.2009, 10:27   #3
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

я знаю как сделать взять ip и mac на своей машинке...

Не могли бы вы подсказать как послать пинг и послушать с него данные...
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 21.07.2009, 10:49   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Вкладка Indy/Clints
компонент IdIcmpCient
метод ping
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 21.07.2009, 13:39   #5
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

Код:
IdIcmpClient1.Host :='192.168.0.8';
IdIcmpClient1.Ping;
if IdIcmpClient1.ReplyStatus.TimeToLive>0 then //комп живой
begin

end;
а что дальше...пока в голове не укладывается..

надо выполнить команду

arp -a 192.168.0.8

это я понял... не понял как и чем....
И самое главное как получить ответ куда нибудь.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 21.07.2009, 13:46   #6
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Вот один из вариантов получения arp-таблицы
Код:
_MIB_IPNETROW = Record
    dwIndex{ DWORD; // adapter index
    dwPhysAddrLen{ DWORD; // physical address length
    bPhysAddr{ Array[1..6(of Byte; // physical address
    dwAddr{ DWORD; // IP address
    dwType{ DWORD; // ARP entry type
  End;
  MIB_IPNETROW = _MIB_IPNETROW;
  _MIB_IPNETTABLE = Record
    dwNumEntries{ DWORD; // number of entries in table
    table{ Array[0..255(of MIB_IPNETROW; // array of ARP entries
  End;
  MIB_IPNETTABLE = _MIB_IPNETTABLE;


var
  Form1{ TForm1;



Function GetIpNetTable )Var pIpNetTable{ MIB_IPNETTABLE; // buffer for mapping table
Var pdwSize{ ULONG; // size of buffer
bOrder{ BOOL:{ DWORD; stdcall; // sort by IP address:;


implementation

Function GetIpNetTable )Var pIpNetTable{ MIB_IPNETTABLE;
Var pdwSize{ ULONG;
bOrder{ BOOL:{ DWORD; stdcall; external 'iphlpapi.dll';

|$R *.DFM"

Function ToHex)C{Byte:{ String;
Begin
Case C and $0F of
  0..9{ Result{=IntToStr)C and $0F:;
  10..15{ Result{=Chr)55+)C and $0F::;
End;
Case )C shr 4: and $0F of
  0..9{ Result{=IntToStr))C shr 4: and $0F:+Result;
  10..15{ Result{=Chr)55+))C shr 4: and $0F::+Result;
End;
End;

procedure TForm1.Button1Click)Sender{ TObject:;
Var
Table{ MIB_IPNETTABLE;
C, Size{ Cardinal;
begin
Size{=SizeOf)Table:;
C{=GetIpNetTable)Table, Size, False:;
Caption{=IntToStr)Table.dwNumEntries:;
For C{=0 to Table.dwNumEntries-1 do
Begin
  ListBox1.Items.Add)IntToStr))Table.table[c(.dwAddr: and $FF:+'.'+
  IntToStr)))Table.table[c(.dwAddr: shr 8: and $FF:+'.'+
  IntToStr)))Table.table[c(.dwAddr: shr 16: and $FF:+'.'+
  IntToStr)))Table.table[c(.dwAddr: shr 24: and $FF:+' - '+
  ToHex)Table.table[c(.bPhysAddr[1(:+'{'+
  ToHex)Table.table[c(.bPhysAddr[2(:+'{'+
  ToHex)Table.table[c(.bPhysAddr[3(:+'{'+
  ToHex)Table.table[c(.bPhysAddr[4(:+'{'+
  ToHex)Table.table[c(.bPhysAddr[5(:+'{'+
  ToHex)Table.table[c(.bPhysAddr[6(::;

End;
end;
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 21.07.2009, 14:09   #7
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

решит проблему так

Код:
function SendARP(const DestIP, SrcIP: ULONG;
    pMacAddr: PULONG; var PhyAddrLen: ULONG): DWORD; stdcall; external 'IPHLPAPI.DLL';

 function GetMAC(Value: TMacAddress; Length: DWORD): String;
  var
    I: Integer;
  begin
    if Length = 0 then Result := '00-00-00-00-00-00' else
    begin
      Result := '';
      for i:= 0 to Length - 2 do
        Result := Result + IntToHex(Value[i], 2) + '-';
      Result := Result + IntToHex(Value[Length-1], 2);
    end;
  end;

procedure TForm1.Button7Click(Sender: TObject);
var
  DestIP, SrcIP: ULONG;
  pMacAddr: TMacAddress;
  PhyAddrLen: ULONG;
begin
  DestIP := inet_addr('192.168.0.5');
  PhyAddrLen := 6;
  SendArp(DestIP, 0, @pMacAddr, PhyAddrLen);
  Caption := GetMAC(pMacAddr, PhyAddrLen);
end;
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Mac OS для PC Mixasik Операционные системы общие вопросы 3 07.12.2008 16:50
mac адрес AvG Компьютерное железо 5 23.07.2008 10:52
MAC сетевухи. Небесный Работа с сетью в Delphi 7 12.07.2008 17:01
Delphi и Mac OS Fenix Nexsais Общие вопросы Delphi 1 31.08.2007 09:17
как узнать ip адрес зная mac адрес Roman Работа с сетью в Delphi 9 25.06.2007 12:39