Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.10.2009, 15:05
Gribok Gribok вне форума
Новичок
 
Регистрация: 25.09.2009
Сообщения: 53
Репутация: 4
По умолчанию узнаем мас адресс?? как?

какпо имени компа или айпи узнать мас адресс??
скажите плиз???

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,NB30, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
 function GetAdapterInfo(Lana: Char): String; 
var 
Adapter: TAdapterStatus;
NCB: TNCB; 
begin 
FillChar(NCB, SizeOf(NCB), 0); 
NCB.ncb_command := Char(NCBRESET); 
NCB.ncb_lana_num := Lana; 
if Netbios(@NCB) <> Char(NRC_GOODRET) then 
begin 
Result := 'mac not found'; 
Exit; 
end;
FillChar(NCB, SizeOf(NCB), 0); 
NCB.ncb_command := Char(NCBASTAT); 
NCB.ncb_lana_num := Lana; 
NCB.ncb_callname := '*'; 

FillChar(Adapter, SizeOf(Adapter), 0); 
NCB.ncb_buffer := @Adapter; 
NCB.ncb_length := SizeOf(Adapter); 
if Netbios(@NCB) <> Char(NRC_GOODRET) then 
begin 
Result := 'mac not found'; 
Exit; 
end; 
Result := 
IntToHex(Byte(Adapter.adapter_address[0]), 2) + '-' + 
IntToHex(Byte(Adapter.adapter_address[1]), 2) + '-' + 
IntToHex(Byte(Adapter.adapter_address[2]), 2) + '-' + 
IntToHex(Byte(Adapter.adapter_address[3]), 2) + '-' + 
IntToHex(Byte(Adapter.adapter_address[4]), 2) + '-' + 
IntToHex(Byte(Adapter.adapter_address[5]), 2); 
end;
function GetMACAddress: string; 
var 
AdapterList: TLanaEnum; 
NCB: TNCB; 
begin 
FillChar(NCB, SizeOf(NCB), 0); 
NCB.ncb_command := Char(NCBENUM); 
NCB.ncb_buffer := @AdapterList; 
NCB.ncb_length := SizeOf(AdapterList); 
Netbios(@NCB); 
if Byte(AdapterList.length) > 0 then 
Result := GetAdapterInfo(AdapterList.lana[0]) 
else 
Result := 'mac not found'; 
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:=GetMACAddress;
end;

end.

это показывает мас на локальной машине
тоесть мой
а как чтоб например в Edit вводил йпи иои имя и он мне выводил мас адресс той ашины??
это реально или неи?
Ответить с цитированием
  #2  
Старый 01.10.2009, 15:26
Rat Rat вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 391
Репутация: 6078
По умолчанию

Ну в винде можно сделать так:

Цитата:
To determine the MAC address of a remote device:
Open the MS-DOS prompt (From the Run... command, type "CMD" and press Enter).
Ping a remote device that you want to find the MAC address (for example: PING 192.168.0.1).
Type "ARP -A", and press Enter.

Цитата:
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\WINDOWS>arp -a

Interface: 192.168.1.100 --- 0x10004
Internet Address Physical Address Type
192.168.1.1 aa-fb-c8-34-da-7a dynamic

Соответственно, то же самое можно реализовать на Delphi.
Ответить с цитированием
  #3  
Старый 01.10.2009, 22:42
Аватар для Admin
Admin Admin вне форума
Администратор
 
Регистрация: 03.10.2005
Адрес: Россия, Москва
Сообщения: 1,551
Версия Delphi: Delphi 7
Репутация: выкл
Лампочка

http://www.delphisources.ru/pages/so...p_monitor.html
Ответить с цитированием
  #4  
Старый 02.10.2009, 12:22
Gribok Gribok вне форума
Новичок
 
Регистрация: 25.09.2009
Сообщения: 53
Репутация: 4
По умолчанию

Люди хочу определить мак адрес компов в сети делаю так

Код:
function SendARP(DestIP: DWORD; SrcIP: DWORD; pMacAddr: PDWORD; var 
PhyAddrLen: DWORD): DWORD; stdcall; external 'IPHlpAPI.DLL'; 
function GetRemoteMACAddress(DestIP: string): string; 
type 
TInfo = array[0..7] of BYTE; 
var 
dwTargetIP: DWORD; 
dwMacAddress: array[0..1] of DWORD; 
dwMacLen: DWORD; 
dwResult: DWORD; 
X: TInfo; 
begin 
dwTargetIP := Inet_Addr(PChar(DestIP)); 
dwMacLen := 6; 
dwResult := SendARP(dwTargetIP, 0, @dwMacAddress[0], dwMacLen); 
if dwResult = NO_ERROR then 
begin 
X := TInfo(dwMacAddress); 
Result := Format('%x.%x.%x.%x.%x.%x', 
[X[0], X[1], X[2], X[3], X[4], X[5]]); 
end; 
end; 

потом эту функцию применяю к кнопке и в эдит выводу мак адресс так: 

Edit3.Text:=GetRemoteMACAddress(Edit4.Text); 
при этом в Edit4. введен айпи машины в формате 192.168.15.27
и вывожу мас в Edit43 но показывает его не полностью а так:0.13.D3.97.9B.E1
как можно заметить в начале нехватате 1 значение
в чом проблема???
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:26.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025