如何检测本地网络上其他设备的 IP 地址?

Posted

技术标签:

【中文标题】如何检测本地网络上其他设备的 IP 地址?【英文标题】:How can I detect the IP addresses of other devices on the local network? 【发布时间】:2011-09-06 19:04:17 【问题描述】:

我已经使用此代码检测到我的计算机的本地 IP 地址(使用套接字):

Function Ip_Local : String;
  Var Acces_Sock : TCustomIpClient;
Begin
  Acces_Sock := TCustomIpClient.Create(Nil);
  Try
    Result := Acces_Sock.LocalHostAddr
  Finally
    Acces_Sock.Free;
  End;
End; 

如何检测路由器的内部 LAN IP 地址,如果可能,检测任何连接 LAN 的设备(如 DVR)?

【问题讨论】:

根据定义,默认网关地址已知,通过IPHelper API询问,其他设备必须发现,使用UPnP或ICMP。 【参考方案1】:

使用印地:

function CsiGetRemoteIpAddress(const pHostName: string): string;
begin
  TIdStack.IncUsage;
  try
    Result := GStack.ResolveHost(pHostName);
  finally
    TIdStack.DecUsage;
  end;
end;

【讨论】:

本例中的主机名是什么 - ? 如果 pHostName 是 mycomputer 主机名,我的意思是 ResolveHost(pHostName) 解析 mycomputer 的 IP 地址。我不知道路由器主机名。 ok - ResolveHost(pHostName) 不解析给定路由器主机名的 IP 地址,它仅用于计算机主机名。至少这是我到目前为止所得到的。

以上是关于如何检测本地网络上其他设备的 IP 地址?的主要内容,如果未能解决你的问题,请参考以下文章