如何获取当前的NetworkInterfaceInfo
本文关键字:NetworkInterfaceInfo 获取 何获取 | 更新日期: 2023-09-27 18:01:24
我希望能够确定设备当前是如何连接的,无论是蜂窝,wifi,以太网等。我的主要问题是,我是否必须使用socket.GetCurrentNetworkInterface()
打开一个套接字,或者我可以简单地使用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
}