如何使用已连接的接入点
来源:互联网 发布:编程小白 编辑:程序博客网 时间:2024/04/29 18:06
简介
你可以使用已存在的连接RConnection,用来建立到互联网的连接。这将会节省资源和内存。
RConnection可以列出已存在的连接。示例代码中我们查找已存在的连接,并通过IAP接入。如果没有选择激活的连接,那么就会创建一个新的。在示例代码中没有处理错误信息。
MMP文件
LIBRARY http.lib
LIBRARY ecom.lib
LIBRARY esock.lib
LIBRARY commdb.lib
CAPABILITY NetworkServices
头文件
C/C++代码
- #include <http.h>
- #include <es_sock.h>
- #include <commdbconnpref.h>
Source file
C/C++代码
-
- TInt selectedIap=6;
-
-
- RHTTPSession session;
- RSocketServ socketServ;
- RConnection connection;
- TCommDbConnPref connPref;
- socketServ.Connect();
- connection.Open(iSocketServ);
-
-
-
-
- TBool connected(EFalse);
- TConnectionInfoBuf connInfo;
- TUint count;
- if ( connection.EnumerateConnections(count) == KErrNone )
- {
- for (TUint i=1; i<=count; i++)
- {
-
- if ( connection.GetConnectionInfo( i, connInfo ) == KErrNone )
- {
- if ( connInfo().iIapId == selectedIap )
- {
- if ( connection.Attach(connInfo, RConnection::EAttachTypeNormal)
- == KErrNone )
- {
- connected = ETrue;
- break;
- }
- }
- }
- }
- }
-
-
- if ( !connected )
- {
-
-
- connPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt);
- connPref.SetIapId(selectedIap);
- connection.Start(connPref);
- }
-
-
- session.OpenL();
-
-
- RStringPool strPool = session.StringPool();
- RHTTPConnectionInfo connInfo = session.ConnectionInfo();
-
-
- connInfo.SetPropertyL ( strPool.StringF(HTTP::EHttpSocketServ,
- RHTTPSession::GetTable() ), THTTPHdrVal (socketServ.Handle()) );
-
-
- connInfo.SetPropertyL ( strPool.StringF(HTTP::EHttpSocketConnection,
- RHTTPSession::GetTable() ),
- THTTPHdrVal (REINTERPRET_CAST(TInt, &(connection))) );
-
-
-
-
-
- CYourClass::~CYourClass()
- {
- session.Close();
- connection.Close();
- socketServ.Close();
- }