如何获取当前的NetworkInterfaceInfo

本文关键字:NetworkInterfaceInfo 获取 何获取 | 更新日期: 2023-09-27 18:01:24

我希望能够确定设备当前是如何连接的,无论是蜂窝,wifi,以太网等。我的主要问题是,我是否必须使用socket.GetCurrentNetworkInterface()打开一个套接字,或者我可以简单地使用NetworkInterfaceInfo类并确定设备当前是如何连接的?我需要做的是确定应用程序启动时设备的连接方式,然后在设备连接发生变化时更新此数据。我如何才能做到这一点,始终知道设备当前是如何连接的?

如何获取当前的NetworkInterfaceInfo

首先,如果您希望了解网络连接的变化,您将需要使用DeviceNetworkInformation。NetworkAvailabilityChanged事件。

你不需要打开套接字,我建议迭代NetworkInterfaceList,这是一个NetworkInterfaceInfo对象的集合。对于每个网络接口,看看它是否连接,如果连接,看看它是什么类型的网络接口。下面是一些示例代码:

NetworkStateTracker()
{
  DetermineNetworkState();
  DeviceNetworkInformation.NetworkAvailabilityChanged += OnNetworkAvailabilityChanged;
}
void OnNetworkAvailabilityChanged(object sender, NetworkNotificationEventArgs args)
{
  DetermineNetworkState();
}
void DetermineNetworkState()
{
  bool bIsCellularConnected = false;
  bool bIsWiFiConnected = false;
  NetworkInterfaceList netInfoList = new NetworkInterfaceList();
  foreach (NetworkInterfaceInfo netInfo in netInfoList)
  {
    if (netInfo.InterfaceState == ConnectState.Connected)
    {
      switch (netInfo.InterfaceType)
      {
        case NetworkInterfaceType.MobileBroadbandCdma:
        case NetworkInterfaceType.MobileBroadbandGsm:
          bIsCellularConnected = true;
          break;
        case NetworkInterfaceType.Wireless80211:
          bIsWiFiConnected = true;
      }
    }
  }
  // Do something with the Network
}
相关文章:
  • 没有找到相关文章