Sophie

Sophie

distrib > Mandriva > 8.2 > i586 > media > contrib > by-pkgid > 68d373e54fb21da3730c08bede406633 > files > 633

libCommonC++1.9_3-devel-1.9.4-2mdk.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>ost::Socket class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 1.2.10 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="namespacemembers.html">Namespace Members</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>ost::Socket  Class Reference</h1>The <a class="el" href="classost_1_1_socket.html">Socket</a> is used as the base for all Internet protocol services under Common C++. base class of all sockets. 
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="socket_8h-source.html">socket.h</a>&gt;</code>
<p>
<p>Inheritance diagram for ost::Socket::
<p><center><img src="classost_1_1_socket.gif" usemap="#ost::Socket_map" border="0"></center>
<map name="ost::Socket_map">
<area href="classost_1_1_socket_port.html" alt="ost::SocketPort" shape="rect" coords="0,56,116,80">
<area href="classost_1_1_t_c_p_socket.html" alt="ost::TCPSocket" shape="rect" coords="126,56,242,80">
<area href="classost_1_1_t_c_p_stream.html" alt="ost::TCPStream" shape="rect" coords="252,56,368,80">
<area href="classost_1_1_u_d_p_socket.html" alt="ost::UDPSocket" shape="rect" coords="630,56,746,80">
<area href="classost_1_1_t_c_p_session.html" alt="ost::TCPSession" shape="rect" coords="126,112,242,136">
<area href="classost_1_1tcpstream.html" alt="ost::tcpstream" shape="rect" coords="252,112,368,136">
<area href="classost_1_1_u_r_l_stream.html" alt="ost::URLStream" shape="rect" coords="378,112,494,136">
<area href="classost_1_1_u_d_p_broadcast.html" alt="ost::UDPBroadcast" shape="rect" coords="504,112,620,136">
<area href="classost_1_1_u_d_p_receive.html" alt="ost::UDPReceive" shape="rect" coords="630,112,746,136">
<area href="classost_1_1_u_d_p_transmit.html" alt="ost::UDPTransmit" shape="rect" coords="756,112,872,136">
<area href="classost_1_1_u_d_p_duplex.html" alt="ost::UDPDuplex" shape="rect" coords="630,168,746,192">
<area href="classost_1_1_u_d_p_duplex.html" alt="ost::UDPDuplex" shape="rect" coords="756,168,872,192">
</map>
<a href="classost_1_1_socket-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
<tr><td nowrap align=right valign=top>virtual&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a0">~Socket</a> ()</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>The socket base class may be "thrown" as a result of an error, and the "catcher" may then choose to destroy the object.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>Socket &amp;&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a1">operator=</a> (const Socket &amp;from)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Sockets may also be duplicated by the assignment operator.</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="classost_1_1_inet_host_address.html">InetHostAddress</a>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a2">getSender</a> (<a class="el" href="namespaceost.html#a97">tpport_t</a> *port=NULL) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>May be used to examine the origin of data waiting in the socket receive queue.</em> <a href="#a2">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="classost_1_1_inet_host_address.html">InetHostAddress</a>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a3">getPeer</a> (<a class="el" href="namespaceost.html#a97">tpport_t</a> *port=NULL) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Get the host address and port of the socket this socket is connected to.</em> <a href="#a3">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="classost_1_1_inet_host_address.html">InetHostAddress</a>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a4">getLocal</a> (<a class="el" href="namespaceost.html#a97">tpport_t</a> *port=NULL) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Get the local address and port number this socket is currently bound to.</em> <a href="#a4">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a5">setCompletion</a> (bool immediate)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Used to specify blocking mode for the socket.</em> <a href="#a5">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="namespaceost.html#a94">sockerror_t</a>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a6">setLinger</a> (bool <a class="el" href="classost_1_1_socket.html#n7">linger</a>)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Enable lingering sockets on close.</em> <a href="#a6">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="namespaceost.html#a94">sockerror_t</a>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a7">setKeepAlive</a> (bool enable)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Set the keep-alive status of this socket and if keep-alive messages will be sent.</em> <a href="#a7">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="namespaceost.html#a94">sockerror_t</a>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a8">setTypeOfService</a> (<a class="el" href="namespaceost.html#a95">socktos_t</a> service)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Set packet scheduling on platforms which support ip quality of service conventions.</em> <a href="#a8">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>bool&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a9">isConnected</a> (void) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Can test to see if this socket is "connected", and hence whether a "catch" can safely call <a class="el" href="classost_1_1_socket.html#a3">getPeer</a>().</em> <a href="#a9">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>bool&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a10">isActive</a> (void) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Test to see if the socket is at least operating or if it is mearly initialized.</em> <a href="#a10">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>bool&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a11">operator!</a> () const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Operator based testing to see if a socket is currently active.</em> <a href="#a11">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>bool&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a12">isBroadcast</a> (void) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Return if broadcast has been enabled for the specified socket.</em> <a href="#a12">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>bool&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a13">isRouted</a> (void) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Return if socket routing is enabled.</em> <a href="#a13">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="namespaceost.html#a94">sockerror_t</a>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a14">getErrorNumber</a> (void) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Often used by a "catch" to fetch the last error of a thrown socket.</em> <a href="#a14">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>const char *&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a15">getErrorString</a> (void) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Often used by a "catch" to fetch the user set error string of a thrown socket, but only if EXTENDED error codes are used.</em> <a href="#a15">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual bool&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a16">isPending</a> (<a class="el" href="namespaceost.html#a96">sockpend_t</a> pend, <a class="el" href="thread_8h.html#a11">timeout_t</a> timeout=TIMEOUT_INF)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Get the status of pending operations.</em> <a href="#a16">More...</a><em></em></font><br><br></td></tr>
<tr><td colspan=2><br><h2>Protected Methods</h2></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="namespaceost.html#a94">sockerror_t</a>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b0">Error</a> (<a class="el" href="namespaceost.html#a94">sockerror_t</a> error, char *errstr=NULL) const</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>This service is used to throw all socket errors which usually occur during the socket constructor.</em> <a href="#b0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b1">Error</a> (char *estr)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>This service is used to throw application defined socket errors where the application specific error code is a string.</em> <a href="#b1">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b2">setError</a> (bool enable)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>This service is used to turn the error handler on or off for "throwing" exceptions by manipulating the thrown flag.</em> <a href="#b2">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b3">endSocket</a> (void)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Used as the default destructor for ending a socket.</em> <a href="#b3">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="namespaceost.html#a94">sockerror_t</a>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b4">connectError</a> (void)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Used as a common handler for connection failure processing.</em> <a href="#b4">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="namespaceost.html#a94">sockerror_t</a>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b5">setBroadcast</a> (bool enable)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Set the subnet broadcast flag for the socket.</em> <a href="#b5">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="namespaceost.html#a94">sockerror_t</a>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b6">setMulticast</a> (bool enable)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Setting multicast binds the multicast interface used for the socket to the interface the socket itself has been implicitly bound to.</em> <a href="#b6">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="namespaceost.html#a94">sockerror_t</a>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b7">setLoopback</a> (bool enable)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Set the multicast loopback flag for the socket.</em> <a href="#b7">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="namespaceost.html#a94">sockerror_t</a>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b8">setTimeToLive</a> (unsigned char <a class="el" href="classost_1_1_socket.html#n8">ttl</a>)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Set the multicast time to live for a multicast socket.</em> <a href="#b8">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="namespaceost.html#a94">sockerror_t</a>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b9">Join</a> (const <a class="el" href="classost_1_1_inet_mcast_address.html">InetMcastAddress</a> &amp;ia)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Join a multicast group.</em> <a href="#b9">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="namespaceost.html#a94">sockerror_t</a>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b10">Drop</a> (const <a class="el" href="classost_1_1_inet_mcast_address.html">InetMcastAddress</a> &amp;ia)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Drop membership from a multicast group.</em> <a href="#b10">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="namespaceost.html#a94">sockerror_t</a>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b11">setRouting</a> (bool enable)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Set the socket routing to indicate if outgoing messages should bypass normal routing (set false).</em> <a href="#b11">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="namespaceost.html#a94">sockerror_t</a>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b12">setNoDelay</a> (bool enable)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Enable/disable delaying packets (Nagle algorithm).</em> <a href="#b12">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b13">Socket</a> (int domain, int type, int protocol=0)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>An unconnected socket may be created directly on the local machine.</em> <a href="#b13">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b14">Socket</a> (<a class="el" href="socket_8h.html#a2">SOCKET</a> fd)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>A socket object may be created from a file descriptor when that descriptor was created either through a socket() or accept() call.</em> <a href="#b14">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b15">Socket</a> (const Socket &amp;source)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>A socket can also be constructed from an already existing <a class="el" href="classost_1_1_socket.html">Socket</a> object.</em> <a href="#b15">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>ssize_t&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b16">Readline</a> (char *buf, size_t len, <a class="el" href="thread_8h.html#a11">timeout_t</a> timeout=0)</td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>Process a logical input line from a socket descriptor directly.</em> <a href="#b16">More...</a><em></em></font><br><br></td></tr>
<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr>
<tr><td nowrap align=right valign=top>ost::Socket:: { ... } &nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#n9">flags</a></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="socket_8h.html#a2">SOCKET</a>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#n10">so</a></td></tr>
<tr><td>&nbsp;</td><td><font size=-1><em>the actual socket descriptor, in Windows, unlike posix it *cannot* be used as an file descriptor that way madness lies -- jfc.</em> <a href="#n10">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a class="el" href="namespaceost.html#a93">sockstate_t</a>&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#n11">state</a></td></tr>
<tr><td nowrap align=right valign=top>bool&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#n0">thrown</a>: 1</td></tr>
<tr><td nowrap align=right valign=top>bool&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#n1">broadcast</a>: 1</td></tr>
<tr><td nowrap align=right valign=top>bool&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#n2">route</a>: 1</td></tr>
<tr><td nowrap align=right valign=top>bool&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#n3">keepalive</a>: 1</td></tr>
<tr><td nowrap align=right valign=top>bool&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#n4">loopback</a>: 1</td></tr>
<tr><td nowrap align=right valign=top>bool&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#n5">multicast</a>: 1</td></tr>
<tr><td nowrap align=right valign=top>bool&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#n6">completion</a>: 1</td></tr>
<tr><td nowrap align=right valign=top>bool&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#n7">linger</a>: 1</td></tr>
<tr><td nowrap align=right valign=top>unsigned&nbsp;</td><td valign=bottom><a class="el" href="classost_1_1_socket.html#n8">ttl</a>: 8</td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
The <a class="el" href="classost_1_1_socket.html">Socket</a> is used as the base for all Internet protocol services under Common C++. base class of all sockets.
<p>
A socket is a system resource (or winsock descriptor) that occupies a specific port address (and may be bound to a specific network interface) on the local machine. The socket may also be directly connected to a specific socket on a remote internet host.
<p>
This base class is not directly used, but is provided to offer properties common to other Common C++ socket classes, including the socket exception model and the ability to set socket properties such as QoS, "sockopts" properties like Dont-Route and Keep-Alive, etc.
<p>
<dl compact><dt><b>
Author: </b><dd>
David Sugar &lt;<a href="mailto:dyfet@ostel.com">dyfet@ostel.com</a>&gt; </dl>
<p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a name="b13" doxytag="ost::Socket::Socket"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> ost::Socket::Socket </td>
          <td class="md">(&nbsp;</td>
          <td class="md">int</td>
          <td class="mdname">&nbsp; <em>domain</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md">int</td>
          <td class="mdname">&nbsp; <em>type</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md">int</td>
          <td class="mdname">&nbsp; <em>protocol</em> = 0</td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"><code> [protected]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
An unconnected socket may be created directly on the local machine.
<p>
Sockets can occupy both the internet domain (AF_INET) and UNIX socket domain (AF_UNIX) under unix. The socket type (SOCK_STREAM, SOCK_DGRAM) and protocol may also be specified. If the socket cannot be created, an exception is thrown.<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>domain
</em>&nbsp;</td><td>
socket domain to use. </td></tr>
<tr><td valign=top><em>type
</em>&nbsp;</td><td>
base type and protocol family of the socket. </td></tr>
<tr><td valign=top><em>protocol
</em>&nbsp;</td><td>
specific protocol to apply. </td></tr>
</table>
</dl>    </td>
  </tr>
</table>
<a name="b14" doxytag="ost::Socket::Socket"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> ost::Socket::Socket </td>
          <td class="md">(&nbsp;</td>
          <td class="md"><a class="el" href="socket_8h.html#a2">SOCKET</a></td>
          <td class="mdname1">&nbsp; <em>fd</em>          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"><code> [protected]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
A socket object may be created from a file descriptor when that descriptor was created either through a socket() or accept() call.
<p>
This constructor is mostly for internal use.<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>fd
</em>&nbsp;</td><td>
file descriptor of an already existing socket. </td></tr>
</table>
</dl>    </td>
  </tr>
</table>
<a name="b15" doxytag="ost::Socket::Socket"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> ost::Socket::Socket </td>
          <td class="md">(&nbsp;</td>
          <td class="md">const Socket &amp;</td>
          <td class="mdname1">&nbsp; <em>source</em>          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"><code> [protected]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
A socket can also be constructed from an already existing <a class="el" href="classost_1_1_socket.html">Socket</a> object.
<p>
The socket file descriptor is dup()'d. This does not exist under win32.<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>source
</em>&nbsp;</td><td>
of existing socket to clone. </td></tr>
</table>
</dl>    </td>
  </tr>
</table>
<a name="a0" doxytag="ost::Socket::~Socket"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> virtual ost::Socket::~Socket </td>
          <td class="md">(&nbsp;</td>
          <td class="mdname1">&nbsp;          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"><code> [virtual]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
The socket base class may be "thrown" as a result of an error, and the "catcher" may then choose to destroy the object.
<p>
By assuring the socket base class is a virtual destructor, we can assure the full object is properly terminated.     </td>
  </tr>
</table>
<hr><h2>Member Function Documentation</h2>
<a name="b10" doxytag="ost::Socket::Drop"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="namespaceost.html#a94">sockerror_t</a> ost::Socket::Drop </td>
          <td class="md">(&nbsp;</td>
          <td class="md">const <a class="el" href="classost_1_1_inet_mcast_address.html">InetMcastAddress</a> &amp;</td>
          <td class="mdname1">&nbsp; <em>ia</em>          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"><code> [protected]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Drop membership from a multicast group.
<p>
<dl compact><dt><b>
Returns: </b><dd>
0 (SOCKET_SUCCESS) on success, else error code. </dl><dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>address
</em>&nbsp;</td><td>
of multicast group to drop. </td></tr>
</table>
</dl>
<p>
Reimplemented in <a class="el" href="classost_1_1_u_d_p_receive.html#b9">ost::UDPReceive</a>.    </td>
  </tr>
</table>
<a name="b1" doxytag="ost::Socket::Error"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void ost::Socket::Error </td>
          <td class="md">(&nbsp;</td>
          <td class="md">char *</td>
          <td class="mdname1">&nbsp; <em>estr</em>          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"><code> [inline, protected]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
This service is used to throw application defined socket errors where the application specific error code is a string.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>errstr
</em>&nbsp;</td><td>
string or message to pass. </td></tr>
</table>
</dl>    </td>
  </tr>
</table>
<a name="b0" doxytag="ost::Socket::Error"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="namespaceost.html#a94">sockerror_t</a> ost::Socket::Error </td>
          <td class="md">(&nbsp;</td>
          <td class="md"><a class="el" href="namespaceost.html#a94">sockerror_t</a></td>
          <td class="mdname">&nbsp; <em>error</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md">char *</td>
          <td class="mdname">&nbsp; <em>errstr</em> = NULL</td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"> const<code> [protected]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
This service is used to throw all socket errors which usually occur during the socket constructor.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>error
</em>&nbsp;</td><td>
defined socket error id. </td></tr>
<tr><td valign=top><em>errstr
</em>&nbsp;</td><td>
string or message to pass. </td></tr>
</table>
</dl>    </td>
  </tr>
</table>
<a name="b9" doxytag="ost::Socket::Join"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="namespaceost.html#a94">sockerror_t</a> ost::Socket::Join </td>
          <td class="md">(&nbsp;</td>
          <td class="md">const <a class="el" href="classost_1_1_inet_mcast_address.html">InetMcastAddress</a> &amp;</td>
          <td class="mdname1">&nbsp; <em>ia</em>          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"><code> [protected]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Join a multicast group.
<p>
<dl compact><dt><b>
Returns: </b><dd>
0 (SOCKET_SUCCESS) on success, else error code. </dl><dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>ia
</em>&nbsp;</td><td>
address of multicast group to join. </td></tr>
</table>
</dl>
<p>
Reimplemented in <a class="el" href="classost_1_1_u_d_p_receive.html#b8">ost::UDPReceive</a>.    </td>
  </tr>
</table>
<a name="b16" doxytag="ost::Socket::Readline"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> ssize_t ost::Socket::Readline </td>
          <td class="md">(&nbsp;</td>
          <td class="md">char *</td>
          <td class="mdname">&nbsp; <em>buf</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md">size_t</td>
          <td class="mdname">&nbsp; <em>len</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md"><a class="el" href="thread_8h.html#a11">timeout_t</a></td>
          <td class="mdname">&nbsp; <em>timeout</em> = 0</td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"><code> [protected]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Process a logical input line from a socket descriptor directly.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>pointer
</em>&nbsp;</td><td>
to string. </td></tr>
<tr><td valign=top><em>maximum
</em>&nbsp;</td><td>
length to read. </td></tr>
<tr><td valign=top><em>timeout
</em>&nbsp;</td><td>
for pending data in milliseconds. </td></tr>
</table>
</dl><dl compact><dt><b>
Returns: </b><dd>
number of bytes actually read. </dl>    </td>
  </tr>
</table>
<a name="b4" doxytag="ost::Socket::connectError"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="namespaceost.html#a94">sockerror_t</a> ost::Socket::connectError </td>
          <td class="md">(&nbsp;</td>
          <td class="md">void</td>
          <td class="mdname1">&nbsp;          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"><code> [protected]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Used as a common handler for connection failure processing.
<p>
<dl compact><dt><b>
Returns: </b><dd>
correct failure code to apply. </dl>    </td>
  </tr>
</table>
<a name="b3" doxytag="ost::Socket::endSocket"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void ost::Socket::endSocket </td>
          <td class="md">(&nbsp;</td>
          <td class="md">void</td>
          <td class="mdname1">&nbsp;          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"><code> [protected]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Used as the default destructor for ending a socket.
<p>
This will cleanly terminate the socket connection. It is provided for use in derived virtual destructors.     </td>
  </tr>
</table>
<a name="a14" doxytag="ost::Socket::getErrorNumber"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="namespaceost.html#a94">sockerror_t</a> ost::Socket::getErrorNumber </td>
          <td class="md">(&nbsp;</td>
          <td class="md">void</td>
          <td class="mdname1">&nbsp;          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"> const<code> [inline]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Often used by a "catch" to fetch the last error of a thrown socket.
<p>
<dl compact><dt><b>
Returns: </b><dd>
error number of sockerror_t error. </dl>    </td>
  </tr>
</table>
<a name="a15" doxytag="ost::Socket::getErrorString"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> const char* ost::Socket::getErrorString </td>
          <td class="md">(&nbsp;</td>
          <td class="md">void</td>
          <td class="mdname1">&nbsp;          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"> const<code> [inline]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Often used by a "catch" to fetch the user set error string of a thrown socket, but only if EXTENDED error codes are used.
<p>
<dl compact><dt><b>
Returns: </b><dd>
string for error message. </dl>    </td>
  </tr>
</table>
<a name="a4" doxytag="ost::Socket::getLocal"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classost_1_1_inet_host_address.html">InetHostAddress</a> ost::Socket::getLocal </td>
          <td class="md">(&nbsp;</td>
          <td class="md"><a class="el" href="namespaceost.html#a97">tpport_t</a> *</td>
          <td class="mdname1">&nbsp; <em>port</em> = NULL          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Get the local address and port number this socket is currently bound to.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>ptr
</em>&nbsp;</td><td>
to port number on local host. </td></tr>
</table>
</dl><dl compact><dt><b>
Returns: </b><dd>
host address of interface this socket is bound to. </dl>
<p>
Reimplemented in <a class="el" href="classost_1_1_t_c_p_socket.html#a3">ost::TCPSocket</a>.    </td>
  </tr>
</table>
<a name="a3" doxytag="ost::Socket::getPeer"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classost_1_1_inet_host_address.html">InetHostAddress</a> ost::Socket::getPeer </td>
          <td class="md">(&nbsp;</td>
          <td class="md"><a class="el" href="namespaceost.html#a97">tpport_t</a> *</td>
          <td class="mdname1">&nbsp; <em>port</em> = NULL          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Get the host address and port of the socket this socket is connected to.
<p>
If the socket is currently not in a connected state, then a host address of 0.0.0.0 is returned.<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>ptr
</em>&nbsp;</td><td>
to port number of remote socket. </td></tr>
</table>
</dl><dl compact><dt><b>
Returns: </b><dd>
host address of remote socket. </dl>
<p>
Reimplemented in <a class="el" href="classost_1_1_u_d_p_socket.html#a6">ost::UDPSocket</a>.    </td>
  </tr>
</table>
<a name="a2" doxytag="ost::Socket::getSender"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="classost_1_1_inet_host_address.html">InetHostAddress</a> ost::Socket::getSender </td>
          <td class="md">(&nbsp;</td>
          <td class="md"><a class="el" href="namespaceost.html#a97">tpport_t</a> *</td>
          <td class="mdname1">&nbsp; <em>port</em> = NULL          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
May be used to examine the origin of data waiting in the socket receive queue.
<p>
This can tell a TCP server where pending "connect" requests are coming from, or a UDP socket where it's next packet arrived from.<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>ptr
</em>&nbsp;</td><td>
to port number of sender. </td></tr>
</table>
</dl><dl compact><dt><b>
Returns: </b><dd>
host address, test with "isInetAddress()". </dl>    </td>
  </tr>
</table>
<a name="a10" doxytag="ost::Socket::isActive"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> bool ost::Socket::isActive </td>
          <td class="md">(&nbsp;</td>
          <td class="md">void</td>
          <td class="mdname1">&nbsp;          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Test to see if the socket is at least operating or if it is mearly initialized.
<p>
"initialized" sockets may be the result of failed constructors.
<p>
<dl compact><dt><b>
Returns: </b><dd>
true if not in initial state. </dl>    </td>
  </tr>
</table>
<a name="a12" doxytag="ost::Socket::isBroadcast"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> bool ost::Socket::isBroadcast </td>
          <td class="md">(&nbsp;</td>
          <td class="md">void</td>
          <td class="mdname1">&nbsp;          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"> const<code> [inline]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Return if broadcast has been enabled for the specified socket.
<p>
<dl compact><dt><b>
Returns: </b><dd>
true if broadcast socket. </dl>    </td>
  </tr>
</table>
<a name="a9" doxytag="ost::Socket::isConnected"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> bool ost::Socket::isConnected </td>
          <td class="md">(&nbsp;</td>
          <td class="md">void</td>
          <td class="mdname1">&nbsp;          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Can test to see if this socket is "connected", and hence whether a "catch" can safely call <a class="el" href="classost_1_1_socket.html#a3">getPeer</a>().
<p>
Of course, an unconnected socket will return a 0.0.0.0 address from <a class="el" href="classost_1_1_socket.html#a3">getPeer</a>() as well.
<p>
<dl compact><dt><b>
Returns: </b><dd>
true when socket is connected to a peer. </dl>    </td>
  </tr>
</table>
<a name="a16" doxytag="ost::Socket::isPending"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> virtual bool ost::Socket::isPending </td>
          <td class="md">(&nbsp;</td>
          <td class="md"><a class="el" href="namespaceost.html#a96">sockpend_t</a></td>
          <td class="mdname">&nbsp; <em>pend</em>, </td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td class="md"><a class="el" href="thread_8h.html#a11">timeout_t</a></td>
          <td class="mdname">&nbsp; <em>timeout</em> = TIMEOUT_INF</td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"><code> [virtual]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Get the status of pending operations.
<p>
This can be used to examine if input or output is waiting, or if an error has occured on the descriptor.
<p>
<dl compact><dt><b>
Returns: </b><dd>
true if ready, false on timeout. </dl><dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>ready
</em>&nbsp;</td><td>
check to perform. </td></tr>
<tr><td valign=top><em>timeout
</em>&nbsp;</td><td>
in milliseconds, inf. if not specified. </td></tr>
</table>
</dl>
<p>
Reimplemented in <a class="el" href="classost_1_1_t_c_p_stream.html#a6">ost::TCPStream</a>.    </td>
  </tr>
</table>
<a name="a13" doxytag="ost::Socket::isRouted"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> bool ost::Socket::isRouted </td>
          <td class="md">(&nbsp;</td>
          <td class="md">void</td>
          <td class="mdname1">&nbsp;          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"> const<code> [inline]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Return if socket routing is enabled.
<p>
<dl compact><dt><b>
Returns: </b><dd>
true if routing enabled. </dl>    </td>
  </tr>
</table>
<a name="a11" doxytag="ost::Socket::operator!"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> bool ost::Socket::operator! </td>
          <td class="md">(&nbsp;</td>
          <td class="md">void</td>
          <td class="mdname1">&nbsp;          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"> const</td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Operator based testing to see if a socket is currently active.
<p>

<p>
Reimplemented in <a class="el" href="classost_1_1tcpstream.html#a6">ost::tcpstream</a>.    </td>
  </tr>
</table>
<a name="a1" doxytag="ost::Socket::operator="></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> Socket&amp; ost::Socket::operator= </td>
          <td class="md">(&nbsp;</td>
          <td class="md">const Socket &amp;</td>
          <td class="mdname1">&nbsp; <em>from</em>          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Sockets may also be duplicated by the assignment operator.
<p>
    </td>
  </tr>
</table>
<a name="b5" doxytag="ost::Socket::setBroadcast"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="namespaceost.html#a94">sockerror_t</a> ost::Socket::setBroadcast </td>
          <td class="md">(&nbsp;</td>
          <td class="md">bool</td>
          <td class="mdname1">&nbsp; <em>enable</em>          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"><code> [protected]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set the subnet broadcast flag for the socket.
<p>
This enables sending to a subnet and may require special image privileges depending on the operating system.
<p>
<dl compact><dt><b>
Returns: </b><dd>
0 (SOCKET_SUCCESS) on success, else error code. </dl><dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>enable
</em>&nbsp;</td><td>
when set to true. </td></tr>
</table>
</dl>
<p>
Reimplemented in <a class="el" href="classost_1_1_u_d_p_transmit.html#a4">ost::UDPTransmit</a>.    </td>
  </tr>
</table>
<a name="a5" doxytag="ost::Socket::setCompletion"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void ost::Socket::setCompletion </td>
          <td class="md">(&nbsp;</td>
          <td class="md">bool</td>
          <td class="mdname1">&nbsp; <em>immediate</em>          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Used to specify blocking mode for the socket.
<p>
A socket can be made non-blocking by setting setCompletion(false) or set to block on all access with setCompletion(true). I do not believe this form of non-blocking socket I/O is supported in winsock, though it provides an alternate asynchronous set of socket services.<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>mode
</em>&nbsp;</td><td>
specify socket I/O call blocking mode. </td></tr>
</table>
</dl>    </td>
  </tr>
</table>
<a name="b2" doxytag="ost::Socket::setError"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> void ost::Socket::setError </td>
          <td class="md">(&nbsp;</td>
          <td class="md">bool</td>
          <td class="mdname1">&nbsp; <em>enable</em>          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"><code> [inline, protected]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
This service is used to turn the error handler on or off for "throwing" exceptions by manipulating the thrown flag.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>true
</em>&nbsp;</td><td>
to enable handler. </td></tr>
</table>
</dl>    </td>
  </tr>
</table>
<a name="a7" doxytag="ost::Socket::setKeepAlive"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="namespaceost.html#a94">sockerror_t</a> ost::Socket::setKeepAlive </td>
          <td class="md">(&nbsp;</td>
          <td class="md">bool</td>
          <td class="mdname1">&nbsp; <em>enable</em>          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set the keep-alive status of this socket and if keep-alive messages will be sent.
<p>
<dl compact><dt><b>
Returns: </b><dd>
0 on success. </dl><dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>enable
</em>&nbsp;</td><td>
keep alive messages. </td></tr>
</table>
</dl>    </td>
  </tr>
</table>
<a name="a6" doxytag="ost::Socket::setLinger"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="namespaceost.html#a94">sockerror_t</a> ost::Socket::setLinger </td>
          <td class="md">(&nbsp;</td>
          <td class="md">bool</td>
          <td class="mdname1">&nbsp; <em>linger</em>          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Enable lingering sockets on close.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>specify
</em>&nbsp;</td><td>
linger enable. </td></tr>
</table>
</dl>    </td>
  </tr>
</table>
<a name="b7" doxytag="ost::Socket::setLoopback"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="namespaceost.html#a94">sockerror_t</a> ost::Socket::setLoopback </td>
          <td class="md">(&nbsp;</td>
          <td class="md">bool</td>
          <td class="mdname1">&nbsp; <em>enable</em>          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"><code> [protected]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set the multicast loopback flag for the socket.
<p>
Loopback enables a socket to hear what it is sending.
<p>
<dl compact><dt><b>
Returns: </b><dd>
0 (SOCKET_SUCCESS) on success, else error code. </dl><dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>enable
</em>&nbsp;</td><td>
when set to true. </td></tr>
</table>
</dl>    </td>
  </tr>
</table>
<a name="b6" doxytag="ost::Socket::setMulticast"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="namespaceost.html#a94">sockerror_t</a> ost::Socket::setMulticast </td>
          <td class="md">(&nbsp;</td>
          <td class="md">bool</td>
          <td class="mdname1">&nbsp; <em>enable</em>          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"><code> [protected]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Setting multicast binds the multicast interface used for the socket to the interface the socket itself has been implicitly bound to.
<p>
It is also used as a check flag to make sure multicast is enabled before multicast operations are used.
<p>
<dl compact><dt><b>
Returns: </b><dd>
0 (SOCKET_SUCCESS) on success, else error code. </dl><dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>enable
</em>&nbsp;</td><td>
when set to true. </td></tr>
</table>
</dl>
<p>
Reimplemented in <a class="el" href="classost_1_1_u_d_p_transmit.html#b9">ost::UDPTransmit</a>, and <a class="el" href="classost_1_1_u_d_p_receive.html#b7">ost::UDPReceive</a>.    </td>
  </tr>
</table>
<a name="b12" doxytag="ost::Socket::setNoDelay"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="namespaceost.html#a94">sockerror_t</a> ost::Socket::setNoDelay </td>
          <td class="md">(&nbsp;</td>
          <td class="md">bool</td>
          <td class="mdname1">&nbsp; <em>enable</em>          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"><code> [protected]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Enable/disable delaying packets (Nagle algorithm).
<p>
<dl compact><dt><b>
Returns: </b><dd>
0 on success. </dl><dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>disable
</em>&nbsp;</td><td>
Nagle algorithm when set to true. </td></tr>
</table>
</dl>    </td>
  </tr>
</table>
<a name="b11" doxytag="ost::Socket::setRouting"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="namespaceost.html#a94">sockerror_t</a> ost::Socket::setRouting </td>
          <td class="md">(&nbsp;</td>
          <td class="md">bool</td>
          <td class="mdname1">&nbsp; <em>enable</em>          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"><code> [protected]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set the socket routing to indicate if outgoing messages should bypass normal routing (set false).
<p>
<dl compact><dt><b>
Returns: </b><dd>
0 on success. </dl><dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>enable
</em>&nbsp;</td><td>
normal routing when set to true. </td></tr>
</table>
</dl>
<p>
Reimplemented in <a class="el" href="classost_1_1_u_d_p_transmit.html#a2">ost::UDPTransmit</a>, and <a class="el" href="classost_1_1_u_d_p_receive.html#b6">ost::UDPReceive</a>.    </td>
  </tr>
</table>
<a name="b8" doxytag="ost::Socket::setTimeToLive"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="namespaceost.html#a94">sockerror_t</a> ost::Socket::setTimeToLive </td>
          <td class="md">(&nbsp;</td>
          <td class="md">unsigned char</td>
          <td class="mdname1">&nbsp; <em>ttl</em>          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"><code> [protected]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set the multicast time to live for a multicast socket.
<p>
<dl compact><dt><b>
Returns: </b><dd>
0 (SOCKET_SUCCESS) on success, else error code. </dl><dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>time
</em>&nbsp;</td><td>
to live. </td></tr>
</table>
</dl>
<p>
Reimplemented in <a class="el" href="classost_1_1_u_d_p_transmit.html#b10">ost::UDPTransmit</a>.    </td>
  </tr>
</table>
<a name="a8" doxytag="ost::Socket::setTypeOfService"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="namespaceost.html#a94">sockerror_t</a> ost::Socket::setTypeOfService </td>
          <td class="md">(&nbsp;</td>
          <td class="md"><a class="el" href="namespaceost.html#a95">socktos_t</a></td>
          <td class="mdname1">&nbsp; <em>tos</em>          </td>
          <td class="md">)&nbsp;</td>
          <td class="md"></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Set packet scheduling on platforms which support ip quality of service conventions.
<p>
This effects how packets in the queue are scheduled through the interface.
<p>
<dl compact><dt><b>
Returns: </b><dd>
0 on success, error code on failure. </dl><dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>type
</em>&nbsp;</td><td>
of service enumerated type. </td></tr>
</table>
</dl>
<p>
Reimplemented in <a class="el" href="classost_1_1_u_d_p_transmit.html#a3">ost::UDPTransmit</a>.    </td>
  </tr>
</table>
<hr><h2>Member Data Documentation</h2>
<a name="n1" doxytag="ost::Socket::broadcast"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> bool ost::Socket::broadcast<code> [protected]</code>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<a name="n6" doxytag="ost::Socket::completion"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> bool ost::Socket::completion<code> [protected]</code>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<a name="n9" doxytag="ost::Socket::flags"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> struct { ... }   ost::Socket::flags<code> [protected]</code>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<a name="n3" doxytag="ost::Socket::keepalive"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> bool ost::Socket::keepalive<code> [protected]</code>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<a name="n7" doxytag="ost::Socket::linger"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> bool ost::Socket::linger<code> [protected]</code>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<a name="n4" doxytag="ost::Socket::loopback"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> bool ost::Socket::loopback<code> [protected]</code>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<a name="n5" doxytag="ost::Socket::multicast"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> bool ost::Socket::multicast<code> [protected]</code>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<a name="n2" doxytag="ost::Socket::route"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> bool ost::Socket::route<code> [protected]</code>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<a name="n10" doxytag="ost::Socket::so"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="socket_8h.html#a2">SOCKET</a> ost::Socket::so<code> [protected]</code>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
the actual socket descriptor, in Windows, unlike posix it *cannot* be used as an file descriptor that way madness lies -- jfc.
<p>
    </td>
  </tr>
</table>
<a name="n11" doxytag="ost::Socket::state"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> <a class="el" href="namespaceost.html#a93">sockstate_t</a> ost::Socket::state<code> [protected]</code>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<a name="n0" doxytag="ost::Socket::thrown"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> bool ost::Socket::thrown<code> [protected]</code>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<a name="n8" doxytag="ost::Socket::ttl"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> unsigned ost::Socket::ttl<code> [protected]</code>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
    </td>
  </tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="socket_8h-source.html">socket.h</a></ul>
<hr><address><small>Generated at Fri Jan 4 18:51:50 2002 for CommonC++ by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.gif" alt="doxygen" align="middle" border=0 
width=110 height=53></a>1.2.10 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
 &copy;&nbsp;1997-2001</small></address>
</body>
</html>