Delphi - 映射驱动器 IP 地址
Delphi - mapped drive ipaddress
如何使用 Delphi 找到映射驱动器的 IP 地址。我当前的系统使用映射驱动器连接到 Pervasive 数据库。我正在切换到 PostgreSQL,需要映射驱动器的 IP 地址才能连接到 PostgreSQL 服务器。
我在一台名为 HP 的机器上映射了一个文件夹 (Y:)。将 Y: 传递给 WNetGetConnection returns 机器名称 HP 但是当我在 GetHostName 中使用此值时它 returns 本地机器的详细信息。
我在 Windows10
上使用 XE7
LPathStr:=MAX_PATH;
If WNetGetConnectionA(PAnsiChar('Y:'), PathStr, LPathStr) = 0 then
begin
if GetHostName(PathStr,SizeOf(PathStr)) = 0 then
begin
varHostEnt := GetHostByName(PathStr);
varTInAddr.S_addr := u_long(pu_long(varHostEnt^.h_addr_list^)^);
IpAddr := inet_ntoa(varTInAddr);
HostName := PathStr;
end
您可以使用WNetGetConnection()
or WNetGetUniversalName()
to resolve a network-mapped drive letter/path to its network UNC path, and then you can use a DNS query (gethostbyname()
or better getaddrinfo()
)获取UNC路径中指定的服务器名称的IP地址。
如何使用 Delphi 找到映射驱动器的 IP 地址。我当前的系统使用映射驱动器连接到 Pervasive 数据库。我正在切换到 PostgreSQL,需要映射驱动器的 IP 地址才能连接到 PostgreSQL 服务器。
我在一台名为 HP 的机器上映射了一个文件夹 (Y:)。将 Y: 传递给 WNetGetConnection returns 机器名称 HP 但是当我在 GetHostName 中使用此值时它 returns 本地机器的详细信息。
我在 Windows10
上使用 XE7 LPathStr:=MAX_PATH;
If WNetGetConnectionA(PAnsiChar('Y:'), PathStr, LPathStr) = 0 then
begin
if GetHostName(PathStr,SizeOf(PathStr)) = 0 then
begin
varHostEnt := GetHostByName(PathStr);
varTInAddr.S_addr := u_long(pu_long(varHostEnt^.h_addr_list^)^);
IpAddr := inet_ntoa(varTInAddr);
HostName := PathStr;
end
您可以使用WNetGetConnection()
or WNetGetUniversalName()
to resolve a network-mapped drive letter/path to its network UNC path, and then you can use a DNS query (gethostbyname()
or better getaddrinfo()
)获取UNC路径中指定的服务器名称的IP地址。