很多移动设备都是有自己的类库来操作wifi的,但还是存在一些设备没有专门的开发包,最近这个项目就碰到了这个问题,由于程序需要实时与服务器交互数据所以需要wifi网络支持,并随时监控网络状态,以便控制程序缓存数据或信息提示。上网找了半天终于找到了OpenNETCF.Net 控件。大家可以到这里得到详细信息 ,开发包下载 Build_WiFi_Discover_App_NETCF2.msi。开发包是基于CF.NET 2.0得。但这个开发包使用存在局限,首先它的核心控件是基于CF.NET 1.0基础上的,这样就导致如果你强制使用基于在CF.NET 2.0的window ce 5.0以上的平台,编译时会出现“warning MSB3247” “同一依赖程序集的不同版本之间出现冲突”警告提示,并且在运行时会在调用“PreferredAccessPoints”属性时,出现参数堆栈溢出异常,一句话:不能用。本来打算放弃,自己通过API函数来实现无线网络监控,但OpenNET组织开发出了最新的SDF OpenNETCF 2.2版本,下载安装反编译发现完全建立CF.NET 2.0架构之上,于是试着使用了以下,发现之前的问题都荡然无存,虽然两个版本之间的之间的代码使用上存在较大差异,但新版本确实不错,除wifi之外,USB等连接也都可以监控。
Code
NetworkInterface[] m_NetworkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
NetworkInterface m_NetworkInterface = null;
// 查找网络连接
string strWifiName = "wlan1";
foreach (NetworkInterface networInt in m_NetworkInterfaces)
{
if (networInt.Name != "" && networInt.Name.ToLower() == strWifiName.ToLower())
{
m_NetworkInterface = (WirelessZeroConfigNetworkInterface)networInt;
break;
}
}
if (null == this.m_NetworkInterface)
{
return "查找不到无线网络接入点!";;
}
//查找接入点
string strWifiSSID = "TP-LINK";
AccessPoint m_cuurentAP = m_NetworkInterface.PreferredAccessPoints.FindBySSID(strWifiSSID);
更多功能还在慢慢研究。