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

Delphi Sources



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

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

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

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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,553
Версия 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
По умолчанию

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

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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, время: 21:40.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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