Starting a Socket Server connection: Tutorial

This tutorial describes how to start an RConnection connection. Each connection must be started to link the connection with the network interface hardware.

Context

Implicit Connection Startup

In the following example, the application is unaware of the connection and does not have an instance of RConnection. This might be used if an application tries to connect a socket or resolve a name and the socket server detects that a connection has not been started. This example does not differ from previous versions of the Symbian platform.

Note: Error handling is not included to aid clarity.

RSocketServ ss;
RSocket sock;
TRequestStatus status;

// Connect to the socket server
ss.Connect();

// Open a TCP socket 
sock.Open(ss, KAfInet, KSockStream, KProtocolInetTcp);
_LIT(KRasAddr,"10.159.24.13");
const TInt KEchoPort = 7;
TInetAddr destAddr;
destAddr.Input(KRasAddr);
destAddr.SetPort(KEchoPort);

// Request the Socket to connect to the destination (implicit Connection)
sock.Connect(destAddr, status);

Explicit Connection Startup

The following example shows how an application can start a connection explicitly via an RConnection instance, and tie an RHostResolver and RSocket to the connection started.

The application is able to override the connection preference settings in CommDb allowing it to specify the Network, IAP, ISP and bearer used. Code examples are given for the cases with and without overrides.

See TCommDbConnPref for information about how to set up the connection.

RSocketServ ss;
TRequestStatus status;
RConnection conn;

_LIT(KRasAddr,"10.159.24.13");
const TInt KEchoPort = 7;

TInetAddr destAddr;
destAddr.Input(KRasAddr);
destAddr.SetPort(KEchoPort);

// Connect to the socket server
ss.Connect();

// Open an RConnection object. Note that you must provide the RSocketServ object
conn.Open(ss);

// Create overrides
TCommDbConnPref prefs;
prefs. SetDialogPreference(ECommDbDialogPrefDoNotPrompt);
prefs.SetDirection(ECommDbConnectionDirectionOutgoing);
prefs.SetIapId(4);

// Start an Outgoing Connection with overrides
conn.Start(prefs);

// Open a Host Resolver associated with the connection
RHostResolver hr;
hr.Open(ss, KAfInet, KProtocolInetTcp, conn);

// Open a Socket associated with the connection
RSocket sock;
sock.Open(ss, KAfInet, KSockStream, KProtocolInetTcp, conn);

// Request the Socket to connect to the destination
sock.Connect(destAddr, status);