我正在用C#编写应用程序,其中一项功能需要根据网络连接执行不同的操作。
例如; 当PC连接到家庭网络网络电缆时执行MethodA 当PC连接到家庭网络但Wifi然后执行MethodB 当PC连接到建筑物1上的Office网络时,然后执行MethodC 当PC连接到建筑物2上的Office网络时,然后执行MethodD 当PC连接到Friends Home网络时执行MethodE
这里我如何区分不同的网络?
答案 0 :(得分:0)
我会使用一些有关网络的信息来解决这个问题。如果你在无线网络上,你就会知道有线网络没有IP。然后根据IP方案,您可以推断出您所处的位置。您将不得不了解有关网络的一些信息。
例如,如果您的工作为您分配了子网范围10.1.0.1-40
中的IP,并且您的家庭网络为您提供了192.168.1.2-255
,那么您可以使用该信息来指示您的应用程序的功能。
不幸的是,这是一个非常松散的耦合,如果路由方案发生变化,那么您的应用程序可能会中断我将这种设置设置为可配置,您可以在其中创建将ip方案映射到“位置”的配置,并将其用作您所做事情的基础。
如果您将网络映射到Windows中的位置,则可以使用此问题中的答案来帮助How do I determine "Network Location" in .NET?。
答案 1 :(得分:0)
我相信您可以可靠地检测机器是通过无线还是电缆连接到本地路由器。
但是,我认为你会遇到很多问题。
如果他们在Vista或以上,您应该能够获得正在使用的网络的“名称”。但是,这必须正确配置,而不是由最终用户提供。
除此之外,您当然可以检查分配给您的IP地址范围......但是,假设建筑物1和2发出不同的范围,并且这些范围与家庭网络发布的范围不同。此外,家庭网络和朋友家网络完全可能在同一内部范围内。
我会说,你的应用程序要好于询问用户使用什么方法,或者给他们提供方法的名称,或者通过询问其他类型的问题给你一个提示。