【发布时间】:2015-04-16 18:12:03
【问题描述】:
好吧,伙计们,我已经挖了又挖,包括在这个网站上,但找不到任何解决方案。
假设多台计算机连接到网络并且都在同一个工作组中。我可以轻松获得他们所有网络名称的列表,例如 //MYCOMPUTER-PC。我正在尝试获取这些机器(不仅仅是当前机器)的所有本地 IP 地址,即 192.168.0.1,而无需物理连接到每个可能的 IP 并测试连接。
到目前为止,我尝试的一切都失败了。要么我只能获取我正在运行的机器的 IP 地址,要么我获取 Searchguide (198.105.244.65) 的 IP 地址,这是我的 ISP 在找不到 IP 地址时的默认设置。
这是我正在使用但失败的代码。如果我在网络名称中留下 \,我会得到一个未知的结果。如果我删除 \ 我得到 Searchguide IP:
function GetIPAddress(NetworkName: String): String;
var
Error: DWORD;
HostEntry: PHostEnt;
Data: WSAData;
Address: In_Addr;
begin
Error:=WSAStartup(MakeWord(1, 1), Data);
if Error = 0 then
begin
HostEntry:=gethostbyname(PansiChar(NetworkName));
Error:=GetLastError();
if Error = 0 then
begin
Address:=PInAddr(HostEntry^.h_addr_list^)^;
Result:=inet_ntoa(Address);
end
else
begin
Result:='Unknown';
end;
end
else
begin
Result:='Error';
end;
WSACleanup();
end;
所以,假设我对这些计算机所连接的路由器一无所知,是否有可能获得本地 IP 的列表???
谢谢
编辑
这是它的输出图像
【问题讨论】:
标签: delphi networking delphi-xe5