本文主要是介绍如何使用已连接的接入点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
简介
你可以使用已存在的连接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++代码
- // Selected IAP
- TInt selectedIap=6;
- // Open socket server and connection
- RHTTPSession session; // TODO: Set to your class member variable
- RSocketServ socketServ; // TODO: Set to your class member variable
- RConnection connection; // TODO: Set to your class member variable
- TCommDbConnPref connPref; // TODO: Set to your class member variable
- socketServ.Connect();
- connection.Open(iSocketServ);
- // Search through existing connections.
- // If there is already a connection that matches the given IAP, try to attach to
- // existing connection.
- TBool connected(EFalse);
- TConnectionInfoBuf connInfo;
- TUint count;
- if ( connection.EnumerateConnections(count) == KErrNone )
- {
- for (TUint i=1; i<=count; i++)
- {
- // Note: GetConnectionInfo expects 1-based index
- if ( connection.GetConnectionInfo( i, connInfo ) == KErrNone )
- {
- if ( connInfo().iIapId == selectedIap )
- {
- if ( connection.Attach(connInfo, RConnection::EAttachTypeNormal)
- == KErrNone )
- {
- connected = ETrue;
- break ;
- }
- }
- }
- }
- }
- // Is there an active connection?
- if ( !connected )
- {
- // Could not attach to the existing connection.
- // => Start a new connection.
- connPref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt);
- connPref.SetIapId(selectedIap);
- connection.Start(connPref);
- }
- // Open session
- session.OpenL();
- // Set the session's connection info...
- RStringPool strPool = session.StringPool();
- RHTTPConnectionInfo connInfo = session.ConnectionInfo();
- // ...to use the socket server
- connInfo.SetPropertyL ( strPool.StringF(HTTP::EHttpSocketServ,
- RHTTPSession::GetTable() ), THTTPHdrVal (socketServ.Handle()) );
- // ...to use the connection
- connInfo.SetPropertyL ( strPool.StringF(HTTP::EHttpSocketConnection,
- RHTTPSession::GetTable() ),
- THTTPHdrVal (REINTERPRET_CAST(TInt, &(connection))) );
- // TODO: Remember to close handles in your class destructor, such as:
- CYourClass::~CYourClass()
- {
- session.Close(); // Close handles in this order
- connection.Close();
- socketServ.Close();
- }
这篇关于如何使用已连接的接入点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!