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