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

来源:互联网 发布:双色球黄金分割算法 编辑:程序博客网 时间:2024/05/16 17:28

http://blog.qdac.cc/?p=2902

unit Unit5;interfaceuses  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.


0 0
原创粉丝点击