Symbian3/SDK/Source/GUID-56DF9711-1EFA-5A07-A92B-3F3D6FBD17A8.dita
changeset 8 ae94777fff8f
parent 7 51a74ef9ed63
child 13 48780e181b38
equal deleted inserted replaced
7:51a74ef9ed63 8:ae94777fff8f
     9 -->
     9 -->
    10 <!DOCTYPE concept
    10 <!DOCTYPE concept
    11   PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
    11   PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
    12 <concept xml:lang="en" id="GUID-56DF9711-1EFA-5A07-A92B-3F3D6FBD17A8"><title>Sockets Server Client API</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic introduces the Sockets Server API and discusses the main classes. </p> <p>The Sockets Server Client interfaces make asynchronous calls to the Sockets Server. The Server co-ordinates client access to socket services, and manages communications with the protocol plug-ins that provide support for the particular networking protocols. </p> <p>Each protocol plug-in may contain a number of protocols. The term ‘protocol’ may also be used to describe a suite of protocols. For example, the TCP/IP protocol plug-in contains UDP, TCP, ICMP, IP, and DNS. Sockets can access UDP and TCP to transfer data over IP. Another example of a protocol plug-in is the IrDA plug-in. the IrDA plug-in is used for communicating over infrared. </p> <p>The Sockets Server loads protocols plug-ins at runtime either explicitly or on demand. When the server starts, the server scans <filepath>\private\101f7989\esock</filepath> for <xref href="GUID-9430D718-6E4D-5AE1-8389-24A47DFAAF16.dita">.esk</xref> files to see which protocols and services are defined, and which protocols to load. </p> <p>The Sockets Server Client API implements the idea of <keyword>transport independence</keyword>: different protocols are accessed through the same API. However, individual protocols exhibit different properties and semantics regarding socket behaviour. The semantics implemented by any given protocol can be found by interrogating the system using <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita#GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449/GUID-1B597C97-2AEB-32D1-B225-5C1E24F6470F"><apiname>RSocketServ::GetProtocolInfo()</apiname></xref>, which describes the protocol semantics encapsulated in a <xref href="GUID-0FB20F20-67EE-3948-B9F6-E1D679AC3D0F.dita"><apiname>TProtocolDesc</apiname></xref>. </p> <section><title>APIs</title> <p>Five main classes provide the Sockets Server Client API functionality: </p> <ul><li id="GUID-8F21CED0-F874-59E5-9CDE-8212C20F7101"><p> <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita"><apiname>RSocketServ</apiname></xref>  </p> </li> <li id="GUID-D6C46C27-33FA-55E1-9DA0-0FCB64239A65"><p> <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref>  </p> </li> <li id="GUID-C65285B2-F251-5021-B830-6388F8600AB0"><p> <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita"><apiname>RHostResolver</apiname></xref>  </p> </li> <li id="GUID-30061681-0502-57D4-9E24-3AC265140435"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref>  </p> </li> <li id="GUID-62AEBD22-81FC-539D-BDD3-12CBA93CB0DB"><p> <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref>  </p> </li> </ul> <p>The <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita"><apiname>RSocketServ</apiname></xref> class establishes and reserves resources for the base communication session to the Sockets Server. The <codeph>RSocketServ</codeph> hosts other Sockets Server Client APIs as subsessions inside the <codeph>RSocketServ</codeph> session. The Sockets Server Client APIs which are hosted as subsessions inside <codeph>RSocketServ</codeph> are <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref>, <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita"><apiname>RHostResolver</apiname></xref>, <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> and <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref>. The <codeph>RSocketServ</codeph> class provides functions to load and query protocols. </p> <fig id="GUID-D7E19F08-CADC-5050-A9C7-5A48213B2B0E"><title>
    12 <concept xml:lang="en" id="GUID-56DF9711-1EFA-5A07-A92B-3F3D6FBD17A8"><title>Sockets Server Client API</title><prolog><metadata><keywords/></metadata></prolog><conbody><p>This topic introduces the Sockets Server API and discusses the main classes. </p> <p>The Sockets Server Client interfaces make asynchronous calls to the Sockets Server. The Server co-ordinates client access to socket services, and manages communications with the protocol plug-ins that provide support for the particular networking protocols. </p> <p>Each protocol plug-in may contain a number of protocols. The term ‘protocol’ may also be used to describe a suite of protocols. For example, the TCP/IP protocol plug-in contains UDP, TCP, ICMP, IP, and DNS. Sockets can access UDP and TCP to transfer data over IP. Another example of a protocol plug-in is the IrDA plug-in. the IrDA plug-in is used for communicating over infrared. </p> <p>The Sockets Server loads protocols plug-ins at runtime either explicitly or on demand. When the server starts, the server scans <filepath>\private\101f7989\esock</filepath> for <xref href="GUID-9430D718-6E4D-5AE1-8389-24A47DFAAF16.dita">.esk</xref> files to see which protocols and services are defined, and which protocols to load. </p> <p>The Sockets Server Client API implements the idea of <keyword>transport independence</keyword>: different protocols are accessed through the same API. However, individual protocols exhibit different properties and semantics regarding socket behaviour. The semantics implemented by any given protocol can be found by interrogating the system using <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita#GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449/GUID-1B597C97-2AEB-32D1-B225-5C1E24F6470F"><apiname>RSocketServ::GetProtocolInfo()</apiname></xref>, which describes the protocol semantics encapsulated in a <xref href="GUID-0FB20F20-67EE-3948-B9F6-E1D679AC3D0F.dita"><apiname>TProtocolDesc</apiname></xref>. </p> <section><title>APIs</title> <p>Five main classes provide the Sockets Server Client API functionality: </p> <ul><li id="GUID-8F21CED0-F874-59E5-9CDE-8212C20F7101"><p> <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita"><apiname>RSocketServ</apiname></xref>  </p> </li> <li id="GUID-D6C46C27-33FA-55E1-9DA0-0FCB64239A65"><p> <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref>  </p> </li> <li id="GUID-C65285B2-F251-5021-B830-6388F8600AB0"><p> <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita"><apiname>RHostResolver</apiname></xref>  </p> </li> <li id="GUID-30061681-0502-57D4-9E24-3AC265140435"><p> <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref>  </p> </li> <li id="GUID-62AEBD22-81FC-539D-BDD3-12CBA93CB0DB"><p> <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref>  </p> </li> </ul> <p>The <xref href="GUID-EF29C1D7-B1E5-370F-AE37-66231A6BE449.dita"><apiname>RSocketServ</apiname></xref> class establishes and reserves resources for the base communication session to the Sockets Server. The <codeph>RSocketServ</codeph> hosts other Sockets Server Client APIs as subsessions inside the <codeph>RSocketServ</codeph> session. The Sockets Server Client APIs which are hosted as subsessions inside <codeph>RSocketServ</codeph> are <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref>, <xref href="GUID-B16CAD6D-85B1-3482-AAC0-9BADEDB6ABDD.dita"><apiname>RHostResolver</apiname></xref>, <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> and <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref>. The <codeph>RSocketServ</codeph> class provides functions to load and query protocols. </p> <fig id="GUID-D7E19F08-CADC-5050-A9C7-5A48213B2B0E"><title>
    13              Figure 1 - Class diagram of RSocketServ inheritance 
    13              Figure 1 - Class diagram of RSocketServ inheritance 
    14           </title> <image href="GUID-9022E900-2BDD-5B64-9802-4EBA5BFEB4B2_d0e117642_href.png" placement="inline"/></fig> <fig id="GUID-142DBA45-272F-59FE-8008-755679B65361"><title>
    14           </title> <image href="GUID-9022E900-2BDD-5B64-9802-4EBA5BFEB4B2_d0e111104_href.png" placement="inline"/></fig> <fig id="GUID-142DBA45-272F-59FE-8008-755679B65361"><title>
    15              Figure 2 - Class diagram of classes which make up the subsession APIs
    15              Figure 2 - Class diagram of classes which make up the subsession APIs
    16              to RSocketServ 
    16              to RSocketServ 
    17           </title> <image href="GUID-E91931D8-E433-58FB-B064-70903FA4C4A5_d0e117648_href.png" placement="inline"/></fig> <p>The <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref> class provides a client endpoint to a protocol. It provides the following services: </p> <ul><li id="GUID-4472E72B-56E5-573E-9C91-10D63616C773"><p>socket creation </p> </li> <li id="GUID-20140DAB-5315-5A1F-B8FD-89203020542D"><p>reading from and writing to a protocol </p> </li> <li id="GUID-405469A5-0144-52DD-9A2D-5A517DF37267"><p>binding to addresses </p> </li> <li id="GUID-E8EBB098-2DAB-5851-BEE2-FE3E3329F414"><p>active connecting </p> </li> <li id="GUID-1C67F551-6AC1-506E-B1AF-C475C2C68412"><p>passive connection through the listen/accept model </p> </li> </ul> <p>The <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> class provides access to the Connection Management functionality of a socket. See <xref href="GUID-BD8446C5-3ADE-59A6-A13A-A5482D6FC56F.dita">Connection Management</xref>. </p> <p>The <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> API provides functions to specify Quality of Service parameters for a channel. See <xref href="GUID-06CE943B-3D6A-50D1-97C3-CCFE4D4F5864.dita">SubConnection Client API</xref>. </p> </section> </conbody><related-links><link href="GUID-9430D718-6E4D-5AE1-8389-24A47DFAAF16.dita"><linktext>ESK Files</linktext> </link> <link href="GUID-782AA56A-D3CF-5239-AB62-9AE6741964E8.dita"><linktext> Reading from a Socket:
    17           </title> <image href="GUID-E91931D8-E433-58FB-B064-70903FA4C4A5_d0e111110_href.png" placement="inline"/></fig> <p>The <xref href="GUID-D4F08503-F1EF-3531-9C3C-4AF24A6255F0.dita"><apiname>RSocket</apiname></xref> class provides a client endpoint to a protocol. It provides the following services: </p> <ul><li id="GUID-4472E72B-56E5-573E-9C91-10D63616C773"><p>socket creation </p> </li> <li id="GUID-20140DAB-5315-5A1F-B8FD-89203020542D"><p>reading from and writing to a protocol </p> </li> <li id="GUID-405469A5-0144-52DD-9A2D-5A517DF37267"><p>binding to addresses </p> </li> <li id="GUID-E8EBB098-2DAB-5851-BEE2-FE3E3329F414"><p>active connecting </p> </li> <li id="GUID-1C67F551-6AC1-506E-B1AF-C475C2C68412"><p>passive connection through the listen/accept model </p> </li> </ul> <p>The <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> class provides access to the Connection Management functionality of a socket. See <xref href="GUID-BD8446C5-3ADE-59A6-A13A-A5482D6FC56F.dita">Connection Management</xref>. </p> <p>The <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> API provides functions to specify Quality of Service parameters for a channel. See <xref href="GUID-06CE943B-3D6A-50D1-97C3-CCFE4D4F5864.dita">SubConnection Client API</xref>. </p> </section> </conbody><related-links><link href="GUID-9430D718-6E4D-5AE1-8389-24A47DFAAF16.dita"><linktext>ESK Files</linktext> </link> <link href="GUID-782AA56A-D3CF-5239-AB62-9AE6741964E8.dita"><linktext> Reading from a Socket:
    18                 Tutorial</linktext> </link> </related-links></concept>
    18                 Tutorial</linktext> </link> </related-links></concept>