gpt4 book ai didi

delphi - 获取连接到我的路由器的所有 MAC 地址和 IP 的列表

转载 作者:行者123 更新时间:2023-12-03 15:45:29 25 4
gpt4 key购买 nike

我想列出连接到我的路由器的所有 MAC 地址,我知道这是可能的,因为我已经看到它完成了。

我认为所有应用程序都使用 WinPcap 来实现此目的,有没有办法可以将它与我的 delphi 应用程序交互?

最佳答案

有几种方法可以做到这一点。第一个是通过 SNMP 连接到路由器并读取 atTable (1.3.6.1.2.1.3.1)。这将为您提供与 MAC 地址匹配的 IP 地址列表。您可以使用 Synapse 中的 SNMP 功能阅读表格。要连接到运行 SNMPv1 或 SNMPv2c 的路由器,您将需要正确的读取社区字符串。对于 SNMPv3,您将需要正确的身份验证详细信息。

另一种方法是使用 ARP。要发送 ARP 请求,您可以使用 iphlpapi dll。下面是一些可以帮助您入门的代码。

unit MyARP

interface

uses
Windows, Classes, SysUtils, WinSock;

function SendARP(DestIp: DWORD; srcIP: DWORD; pMacAddr: pointer; PhyAddrLen: Pointer): DWORD;stdcall; external 'iphlpapi.dll';
function MySendARP(const IPAddress: String): String;

implementation

function MySendARP(const IPAddress: String): String;
var
DestIP: ULONG;
MacAddr: Array [0..5] of Byte;
MacAddrLen: ULONG;
SendArpResult: Cardinal;
begin
DestIP := inet_addr(PAnsiChar(AnsiString(IPAddress)));
MacAddrLen := Length(MacAddr);
SendArpResult := SendARP(DestIP, 0, @MacAddr, @MacAddrLen);

if SendArpResult = NO_ERROR 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]])
else
Result := '';
end;

end.

此方法仅适用于您的本地子网。

关于delphi - 获取连接到我的路由器的所有 MAC 地址和 IP 的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8511444/

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