如何获取当前的网络接口信息

时间:2014-05-03 16:58:02

标签: c# sockets windows-phone-8

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

1 个答案:

答案 0 :(得分:0)

首先,如果您想了解网络连接的变化,您需要使用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
}