问题描述
- windows如何获取当前应用程序使用的网络类型
-
请问各位,Windows下如何获取当前应用程序使用的网络类型?是WIFI还是有线网络.
1.目前实在是没找到类似安卓或者IOS那样的直接就可以读取的API。有的话跪求
2.现在所能想到的就是使用GetAdaptersInfo遍历获取到所有的网卡类型和对应的IP地址,
然后根据gethostbyname得到本地地址,用这个本地地址去匹配遍历得到的网卡IP。这样是否会有问题呢(考虑多网卡的情况)
解决方案
windows上面没有直接提供这一类API,这也不是它所需要支持的,一般是自己对各种类型做分析,然后提炼一些特征出来
解决方案二:
https://msdn.microsoft.com/en-us/library/system.net.networkinformation.networkinterfacetype(v=vs.90).aspx
Wireless80211是无线
Ethernet是有线
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface networkInterface in adapters)
{
Console.WriteLine(networkInterface.NetworkInterfaceType);
}
解决方案三:
判断连接状态:
BOOL bRet = InternetCheckConnection("http://www.ocean-soft.com.cn/", FLAG_ICC_FORCE_CONNECTION, 0);
判断上网类型:
CString str;
DWORD dwFlag;
if(!InternetGetConnectedState(&dwFlag, 0))
{
str = "未连接到网络";
}
else if(dwFlag & INTERNET_CONNECTION_MODEM)
{
str = "上网类型:采用RAS拨号连接上网";
}
else if(dwFlag & INTERNET_CONNECTION_LAN)
{
str = "上网类型:采用网卡通过局域网上网";
}
else if(dwFlag & INTERNET_CONNECTION_PROXY)
{
str = "上网类型:使用代理服务器上网";
}
解决方案四:
你说的这个和IsNetWork类似,但是并不是我需要的,我想找到的是当前使用的网络类型,指使用3G/4G无线网卡,WIFI上网,有线连接这种。类似手机上显示的标志的需求