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

问题描述:

我已经发现使用此代码我的计算机的本地IP地址(使用套接字):如何检测本地网络上其他设备的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; 

有关,如检测到路由器的局域网内部的IP地址,如果可能的话,任何LAN连接的设备的什么一台DVR?

+1

定义,默认网关地址是已知的,通过IpHelper API问,其他设备必须** **发现,使用UPnP或ICMP。 – 2011-06-02 08:52:21

利用Indy:

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

这种情况下的主机名是什么 - ? – volvox 2011-06-02 18:11:34

+0

我的意思是ResolveHost(pHostName)解析mycomputer的IP地址,如果pHostName是mycomputer主机名。我不知道路由器的主机名。 – volvox 2011-06-02 18:30:53

+0

ok - ResolveHost(pHostName)不解析给定路由器主机名的IP地址,它仅用于计算机主机名。至少这是我到目前为止。 – volvox 2011-06-02 18:38:39