gpt4 book ai didi

C# - 如何在连接到 (RAS) VPN 时获取 IP 地址

转载 作者:太空宇宙 更新时间:2023-11-03 16:22:48 28 4
gpt4 key购买 nike

下午好

任何人都可以举例说明在通过 VPN (RAS) 连接到远程 Windows 域网络时如何获取本地计算机的 IP 地址吗?即我需要 VPN 地址而不是远程用户本地网络地址。

例如,我的服务器端 Windows 服务与我的客户端应用程序通信,需要创建所有连接用户及其 IP 地址的日志。

当使用本地网络上的计算机时,此解决方案非常简单,但我想知道如何获取通过 VPN 连接到服务器的用户的 IP 地址。请注意,IP 地址get 方法将在客户端执行并发送到服务器。

这是我当前的代码,仅在本地连接到域网络时才有效:

public static string GetLocalIPv4()
{
string ipv4Address = String.Empty;

foreach (IPAddress currrentIPAddress in Dns.GetHostAddresses(Dns.GetHostName()))
{
if (currrentIPAddress.AddressFamily.ToString() == System.Net.Sockets.AddressFamily.InterNetwork.ToString())
{
ipv4Address = currrentIPAddress.ToString();
break;
}
}

return ipv4Address;
}

我们的内部网络由 Windows SBS 控制,并使用诸如 mycompany.local 之类的域。

非常感谢您抽出宝贵时间,我期待着阅读您的回复。

罗布

最佳答案

正如@MarcB 的评论所指出的,想不出您可能需要该信息的充分理由...因此,如果您能出于好奇解释此信息在应用程序中的用途,那将会很有趣。

但是,关于使用 Dns.GetHostAddresses 为机器枚举 IP 地址,这里和网上有很多不正确的答案。大多数人似乎没有意识到在配置的 DNS 解析器中查找机器名称与枚举机器地址之间的区别。这些是非常不同的事情,虽然在许多情况下它似乎会返回正确的结果,但这绝对是错误的方法,因为它们不是一回事。例如,请参阅此处的一篇文章链接,其中原始发帖人将不正确的回复标记为答案,但正确的回复在@StephanCleary 下方。看: Get IPv4 Addresses

不同之处在于您要查看机器配置并枚举您感兴趣的任何 IP 地址,从机器自己的 TCPIP 堆栈中定位。上面的代码和许多不正确的响应尝试在 DNS 解析器中查找名称。一旦该部分正确无误,您就应该能够根据网络适配器(按名称或其他属性)确定 VPN 连接。

关于C# - 如何在连接到 (RAS) VPN 时获取 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13381871/

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