gpt4 book ai didi

Delphi:获取路由器的MAC

转载 作者:行者123 更新时间:2023-12-03 14:45:35 34 4
gpt4 key购买 nike

我正在使用 Delphi,我想确定网络中网络设备的物理 MAC 地址,在本例中是路由器本身。

我的代码:

var
idsnmp: tidsnmp;
val:string;
begin
idsnmp := tidsnmp.create;
try
idsnmp.QuickSend('.1.3.6.1.2.1.4.22.1.2', 'public', '10.0.0.1', val);
showmessage(val);
finally
idsnmp.free;
end;
end;

其中 10.0.0.1 是我的路由器。

唉,QuickSend 总是发送“Connection Reset by Peer #10054”。我尝试修改 MIB-OID,还尝试了 IP 127.0.0.1,该连接永远不会失败。我在 Google 上没有找到任何关于 TIdSNMP 的可用教程。 :-(

问候丹尼尔·编码(marshal)

最佳答案

您可以使用SendARP函数获取Mac地址。

检查此示例

uses
Windows,
WinSock,
SysUtils;


function SendArp(DestIP,SrcIP:ULONG;pMacAddr:pointer;PhyAddrLen:pointer) : DWord; StdCall; external 'iphlpapi.dll' name 'SendARP';


function GetMacAddr(const IPAddress: string; var ErrCode : DWORD): string;
var
MacAddr : Array[0..5] of Byte;
DestIP : ULONG;
PhyAddrLen : ULONG;
WSAData : TWSAData;
begin
Result :='';
WSAStartup($0101, WSAData);
try
ZeroMemory(@MacAddr,SizeOf(MacAddr));
DestIP :=inet_addr(PAnsiChar(AnsiString(IPAddress)));
PhyAddrLen:=SizeOf(MacAddr);
ErrCode :=SendArp(DestIP,0,@MacAddr,@PhyAddrLen);
if ErrCode = S_OK then
Result:=Format('%2.2x-%2.2x-%2.2x-%2.2x-%2.2x-%2.2x',[MacAddr[0], MacAddr[1],MacAddr[2], MacAddr[3], MacAddr[4], MacAddr[5]])
finally
WSACleanup;
end;
end;

关于Delphi:获取路由器的MAC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4550672/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com