建立gprs连接

来源:互联网 发布:淘宝海外购物怎么处理 编辑:程序博客网 时间:2024/05/18 03:21

Mobile中建立简单的连接的话,也只需要几个函数,首先是检测当前的Connection Manager函数是否准备好了,用ConnMgrApiReadyEvent就可以了。

然后就可以枚举当前的可用网络,使用ConnMgrEnumDestinations

然后选择某个网络建立连接,使用ConnMgrEstablishConnectionSyncConnMgrEstablishConnection就可以了。

检测API函数是否准备好的代码:

  1. BOOL GetConnMgrAvailable()
  2. {
  3.          HANDLE hConnMgr = ConnMgrApiReadyEvent();
  4.          BOOL bAvailbale = FALSE;
  5.          DWORD dwResult = WaitForSingleObject ( hConnMgr, 2000 );
  6.          if ( dwResult == WAIT_OBJECT_0 )
  7.          {
  8.                    bAvailbale = TRUE;
  9.          }
  10.          // 关闭
  11.          if ( hConnMgr ) CloseHandle ( hConnMgr );
  12.          return bAvailbale;
  13. }

枚举网络代码:

  1. void EnumNetIdentifier ()
  2. {
  3.          CONNMGR_DESTINATION_INFO networkDestInfo = {0};
  4.          // 得到网络列表
  5.          for ( DWORD dwEnumIndex=0; ; dwEnumIndex++ )
  6.          {
  7.                    memset ( &networkDestInfo, 0, sizeof(CONNMGR_DESTINATION_INFO) );
  8.                    if ( ConnMgrEnumDestinations ( dwEnumIndex, &networkDestInfo ) == E_FAIL )
  9.                    {
  10.                             //在此处就得到了网络线路的信息,包括名字以及GUID等,要在建立连接的时候使用这时候得到的GUID,或者使用系统默认提供的
  11.                             break;
  12.                    }
  13.          }
  14. }

建立连接代码:

  1. DWORD ConnectGprs()
  2. {
  3.          CONNMGR_CONNECTIONINFO connection; 
  4.          ZeroMemory(&connection, sizeof(connection)); 
  5.          connection.cbSize      = sizeof(connection); 
  6.          connection.dwParams    = CONNMGR_PARAM_GUIDDESTNET; 
  7.          connection.dwFlags   = CONNMGR_FLAG_PROXY_HTTP;                 //使用Http协议
  8.          connection.dwPriority  = CONNMGR_PRIORITY_USERINTERACTIVE;      //优先级为实时
  9.          connection.bExclusive  = FALSE;          //共享,可以使其它软件也使用该线路(?)
  10.          connection.bDisabled  = FALSE;
  11.          connection.guidDestNet = IID_DestNetInternet;      //所选择的网络为默认的Internet
  12.          DWORD dwStatus = CONNMGR_STATUS_UNKNOWN; 
  13.          LRESULT hr = ConnMgrEstablishConnectionSync(&connection,&g_hConnection, /*INFINITE*/120*1000, &dwStatus);         //第三个参数表示连接建立的时间,(毫秒),INFINITE表示一直持续
  14.          return         dwStatus;            //dwStatus返回了连接的信息,是否成功
  15. }

如果在某时刻判断连接是否可用,用ConnMgrConnectionStatus即可。

 

连接好之后,如果dwStatus返回值为CONNMGR_STATUS_CONNECTED,则表示连接是可用的,这时候应该就可以访问网络了。

 

(初学,如果有不正确的地方,希望大家提出批评指正,到现在也搞不清楚枚举出来那么多设备线路,到底都是什么区别,如单位设置、默认单位设置、Internet设置、Wap网络、安全Wap网络等等……

代码基本就是从http://www.vckbase.com/document/viewdoc/?id=1803考过来的)

原创粉丝点击