您的位置:首页 > 其它

通过 ARP 协议获取局域网内指定 IP 地址的机器的 MAC 地址

2015-10-08 11:51 726 查看
http://blog.qdac.cc/?p=2902

unit Unit5;

interface

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

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

function SendARP(ipaddr: ulong; temp: dword; ulmacaddr: pointer; ulmacaddrleng:
pointer): dword; stdcall; external 'Iphlpapi.dll' Name 'SendARP';

function IP2Mac(ipaddr:ULong):String;

var
Form5: TForm5;

implementation

{$R *.dfm}

function IP2Mac(ipaddr:ULong):String;
var
AMac: array [0 .. 5] of BYTE;
l: ulong;
r: integer;
begin
l:=6;
r := SendARP(ipaddr, 0, @AMac, @l);
if r=0 then
Result:=Format('%2.2x-%2.2x-%2.2x-%2.2x-%2.2x-%2.2x', [AMac[0], AMac[1], AMac[2], AMac[3], AMac[4],AMac[5]])
else
Result:='';
end;

procedure TForm5.Button1Click(Sender: TObject);
begin
//
ShowMessage(IP2Mac(inet_addr(PAnsiChar('10.0.0.100'))));
end;

end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: