This topic describes how create an explicitly bound socket.
Start the network interface connection with RConnection::Start() to
create an explicitly bound socket.
Creating an explicitly bound socket
Explicitly bound sockets can be created in two ways:
Open a socket and bind the socket to a network interface connection.
Example:
Call RSocket::Open() and pass an RConnection.
RConnection binds
to an interface corresponding to the RConnection.
In the following example code, if iConn corresponds to a
WiFi RConnection then, after a calling RSocket::Open() the
socket is explicitly bound to WiFi.
iRecvSock.Open( ss, KAfInet, KSockStream, KProtocolInetTcp, iConn );
Open a socket and bind the socket to an IP address of the network interface connection.
Example:
Call RSocket::Bind() and bind the socket to an
IP address of the network interface connection.
RSocket::Bind() binds
the socket to a unique IP address of the network interface connection.
The following example code shows how to open a socket and bind the socket to a unique IP address of the WiFi connection.
// open an implicit socket
TInt err = iRecvSock.Open( iSs, KAfInet, KSockDatagram, KProtocolInetUdp);
User::LeaveIfError( err );
// This IP address maps to WiFi in the ced.cfg file
_LIT(KRasAddr,"192.168.220.4");
const TInt KPort = 7000;
TInetAddr addr;
err = addr.Input( KRasAddr );
User::LeaveIfError( err );
addr.SetPort( KPort );
// Now the socket is explicitly bound to WiFi
err = iRecvSock.Bind( addr );
RDebug::Print( _L("testapp: ETH Bind() = %d"), err );
User::LeaveIfError( err );
The following code block shows an extract from the ced.cfg file.
## [LANService] ADD_SECTION # COMMDB_ID = 1 Name=Ethernet IfNetworks=ip IpNetMask=255.0.0.0 IpGateway=0.0.0.0 IpAddrFromServer=FALSE IpAddr=192.168.1.1 IpDNSAddrFromServer=FALSE ConfigDaemonManagerName=NetCfgExtnDhcp ConfigDaemonName=!DhcpServ FIELD_COUNT=9 END_ADD ADD_SECTION # COMMDB_ID = 2 Name=Ethernet WiFi IfNetworks=ip IpNetMask=255.0.0.0 IpGateway=0.0.0.0 IpAddrFromServer=FALSE -// This IP address maps to WiFi IpAddr=192.168.220.4 IpDNSAddrFromServer=FALSE IpNameServer1=194.72.6.51 IpNameServer2=194.72.6.52 ConfigDaemonManagerName=NetCfgExtnDhcp ConfigDaemonName=!DhcpServ LanServiceExtensionTableName=WLANServiceExtensionTable LanServiceExtensionTableRecordId=4 FIELD_COUNT=13 END_ADD
The socket is explicitly bound to the specific IP address of the network interface connection.
Client A creates a socket with explicit binding using the specified interface connection.
sock1 = RSocket.Open(srv,conn);
ESock creates the socket within the default connection and subconnection.

A socket can also be opened over a sub-connection using RSubConnection.
When the socket is opened, a new Service Access Point (SAP) is created for
the socket in ESock. The SAP is used to handle inbound
and outbound data.