如何使用C#在Windows中检测网络位置类型?

时间:2013-05-03 19:09:43

标签: c# winforms

我正在使用C#编写Windows应用程序,我需要检测网络位置类型。

当您将Windows计算机连接到网络(有线或无线)时,它将尝试识别网络,然后将其分类为公共,私有等。我希望以编程方式使用我的应用程序执行相同的操作。我该怎么做?

如果需要其他详细信息,请与我们联系。谢谢。

2 个答案:

答案 0 :(得分:0)

  you networkinterface to get the network information  
  NetworkInterface[] interfaces =  NetworkInterface.GetAllNetworkInterfaces();


  it has many properties and the output showing infornt of that

  NetworkInterface[0].Description:  Intel(R) 82579LM Gigabit Network Connection
  NetworkInterface[0].ID: {xxxxxxxxxx-0322-466Fxxx-xxxxxxxxxx}
  NetworkInterface[0].Name: Ethernet
  NetworkInterface[0].Interface Type: Ethernet
  NetworkInterface[0].Operational Status: Down
  NetworkInterface[0].Speed: -1
  NetworkInterface[0].Supports Multicast: True

答案 1 :(得分:0)

你需要做两件事:

  • 解析本地计算机的IP地址。这本身就是一个挑战,因为通常机器会有多个IP地址。它可能同时使用多个IP。 IP地址可能(并且正在)动态更改

  • 检查IP地址是否在私有范围内。有关链接和更多信息,请参阅this answer。实际上,每个私有地址只能在本地网络(LAN)中路由。无法从外部连接到私人地址。如果机器想要与外界通信,则它使用网关机。网关机器会记住请求来自哪里(私有IP)将其转换为公共IP并解决反向响应。