织梦CMS - 轻松建站从此开始!

罗索

PPC中如何找到正在使用中的网络

jackyhwei 发布于 2010-08-12 10:29 点击:次 
本篇文章讲讲如何枚举出当前的网络状态,并找到正在使用中的网络。一个比较简单的应用就是当接到系统连接到网络的通知之后,需要判断是免费网络还是收费网络,之后再作相应处理。
TAG:

《PPC中如何判断网络已经连接或者断开》中已经说明了如何判断PPC的网络是否连接和断开,本篇文章讲讲如何枚举出当前的网络状态,并找到正在使用中的网络。一个比较简单的应用就是当接到系统连接到网络的通知之后,需要判断是免费网络还是收费网络,之后再作相应处理。一般免费网络就是WIFI和ActiveSync,收费网络就是CMNET和CMWAP。下面的代码就来判断当前连接的网络究竟是什么网络,要做到这一点,需要使用一个函数ConnMgrQueryDetailedStatus,这个函数可以得到网络的详细信息,从他的dwType中可得到网络的类别,dwSubtype可以知道具体的网络类型。具体代码如下,写的已经是比较详细了,如有问题可以在http://bbs.rosoo.net上留言。
 

  1. CONNMGR_CONNECTION_DETAILED_STATUS *StatusBuffer; 
  2. CONNMGR_CONNECTION_DETAILED_STATUS *StatusBufferTemp; 
  3. DWORD pcbBufferSize = 0; 
  4. ConnMgrQueryDetailedStatus(NULL, &pcbBufferSize); 
  5. StatusBuffer = (CONNMGR_CONNECTION_DETAILED_STATUS *)new BYTE[pcbBufferSize]; 
  6. ConnMgrQueryDetailedStatus(StatusBuffer, &pcbBufferSize); 
  7. StatusBufferTemp = StatusBuffer; 
  8. while(StatusBufferTemp != NULL) 
  9.     if(StatusBufferTemp-〉dwConnectionStatus == CONNMGR_STATUS_CONNECTED) 
  10.     { 
  11.         if(StatusBufferTemp-〉dwType == CM_CONNTYPE_NIC) 
  12.         { 
  13.             switch(StatusBufferTemp-〉dwSubtype) 
  14.             { 
  15.             case CM_CONNSUBTYPE_NIC_WIFI : 
  16.                 MessageBox(_T("WIFI")); 
  17.                 break
  18.             case CM_CONNSUBTYPE_NIC_ETHERNET : 
  19.                 break
  20.             } 
  21.         } 
  22.         if(StatusBufferTemp-〉dwType == CM_CONNTYPE_CELLULAR) 
  23.         { 
  24.             switch(StatusBufferTemp-〉dwSubtype) 
  25.             { 
  26.             case CM_CONNSUBTYPE_CELLULAR_CSD : 
  27.                 break
  28.             case CM_CONNSUBTYPE_CELLULAR_GPRS : 
  29.                 MessageBox(_T("GPRS")); 
  30.                 break
  31.             case CM_CONNSUBTYPE_CELLULAR_1XRTT : 
  32.                 MessageBox(_T("1XRTT")); 
  33.                 break
  34.             case CM_CONNSUBTYPE_CELLULAR_1XEVDO : 
  35.                 MessageBox(_T("1XEVDO")); 
  36.                 break
  37.             case CM_CONNSUBTYPE_CELLULAR_1XEVDV : 
  38.                 break
  39.             case CM_CONNSUBTYPE_CELLULAR_EDGE : 
  40.                 MessageBox(_T("EDGE")); 
  41.                 break
  42.             case CM_CONNSUBTYPE_CELLULAR_UMTS : 
  43.                 break
  44.             case CM_CONNSUBTYPE_CELLULAR_VOICE : 
  45.                 MessageBox(_T("VOICE")); 
  46.                 break
  47.             case CM_CONNSUBTYPE_CELLULAR_PTT : 
  48.                 break
  49.             //case CM_CONNSUBTYPE_CELLULAR_HSDPA : 
  50.             //    break; 
  51.             } 
  52.         } 
  53.         if(StatusBufferTemp-〉dwType == CM_CONNTYPE_PROXY) 
  54.         { 
  55.             switch(StatusBufferTemp-〉dwSubtype) 
  56.             { 
  57.             case CM_CONNSUBTYPE_PROXY_WAP : 
  58.                 MessageBox(_T("WAP")); 
  59.                 break
  60.             case CM_CONNSUBTYPE_PROXY_HTTP : 
  61.                 MessageBox(_T("HTTP")); 
  62.                 break
  63.             } 
  64.         } 
  65.         if(StatusBufferTemp-〉dwType == CM_CONNTYPE_PC) 
  66.         { 
  67.             switch(StatusBufferTemp-〉dwSubtype) 
  68.             { 
  69.             case CM_CONNSUBTYPE_PC_DESKTOPPASSTHROUGH : 
  70.                 MessageBox(_T("ACTIVESYNC")); 
  71.                 break
  72.             case CM_CONNSUBTYPE_PC_UNKNOWN : 
  73.                 break
  74.             } 
  75.         } 
  76.     } 
  77.     StatusBufferTemp = StatusBufferTemp-〉pNext; 
  78. delete StatusBuffer; 

 

(秩名)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201008/9962.html]
本文出处:网络博客 作者:秩名
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容