如果我在这里工作时连接到本地局域网,我需要让我的应用程序通过内部IP访问我们的服务器,否则,我需要在野外时使用我们的外部IP.
目前,我只是尝试通过本地IP连接然后尝试外部如果它失败...但是超时需要一点时间,我想知道是否有办法在尝试之前找出机器所连接的域.
编辑:帕特里克>基本上,该应用程序运行在一台平板电脑上,每天连接到本地网络几次.它通过网络连接的次数与它本地连接的次数大致相等.
所有机器都有一个域帐户,当他们连接到网络(并具有域帐户与像"LOCTabletx",其中x是当它幻像给予机器数字的命名约定.
我正在寻找的是一种快速查看机器是否在我们的本地网络或互联网上连接的方法.使用Environment.UserDomainName获取LOCTabletx而不是域名.
编辑
如果它可以帮助任何人,我只是尝试DNS解析我可以保证将在网络上的机器的名称(其中一个服务器).它对我来说效果很好.
你有没有尝试过:
Environment.UserDomainName
Run Code Online (Sandbox Code Playgroud)
您还可以查看计算机上的活动IP地址,并查询适用于本地网络的IP地址...
var x = NetworkInterface.GetAllNetworkInterfaces()
.Where(ni => ni.OperationalStatus == OperationalStatus.Up)
.SelectMany(ni => ni.GetIPProperties().UnicastAddresses);
// do something with the collection here to determine if you're on the right network.
// just looping & printing here for example.
foreach (var item in x)
{
Console.WriteLine(item.Address);
}
Run Code Online (Sandbox Code Playgroud)
在您找到了所在的网络之后,您可以订阅System.Net.NetworkInformation.NetworkChange.NetworkAddressChanged事件,以便在您的应用运行时处理您的计算机跳转网络.