<!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> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="namespacemembers.html">Namespace Members</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="globals.html">File Members</a> </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 <<a class="el" href="socket_8h-source.html">socket.h</a>></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 </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a0">~Socket</a> ()</td></tr> <tr><td> </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 & </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a1">operator=</a> (const Socket &from)</td></tr> <tr><td> </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> </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> </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> </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> </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> </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> </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 </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a5">setCompletion</a> (bool immediate)</td></tr> <tr><td> </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> </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> </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> </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a7">setKeepAlive</a> (bool enable)</td></tr> <tr><td> </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> </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> </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 </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a9">isConnected</a> (void) const</td></tr> <tr><td> </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 </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a10">isActive</a> (void) const</td></tr> <tr><td> </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 </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a11">operator!</a> () const</td></tr> <tr><td> </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 </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a12">isBroadcast</a> (void) const</td></tr> <tr><td> </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 </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a13">isRouted</a> (void) const</td></tr> <tr><td> </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> </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a14">getErrorNumber</a> (void) const</td></tr> <tr><td> </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 * </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#a15">getErrorString</a> (void) const</td></tr> <tr><td> </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 </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> </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> </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> </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 </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b1">Error</a> (char *estr)</td></tr> <tr><td> </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 </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b2">setError</a> (bool enable)</td></tr> <tr><td> </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 </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b3">endSocket</a> (void)</td></tr> <tr><td> </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> </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b4">connectError</a> (void)</td></tr> <tr><td> </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> </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b5">setBroadcast</a> (bool enable)</td></tr> <tr><td> </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> </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b6">setMulticast</a> (bool enable)</td></tr> <tr><td> </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> </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b7">setLoopback</a> (bool enable)</td></tr> <tr><td> </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> </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> </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> </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> &ia)</td></tr> <tr><td> </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> </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> &ia)</td></tr> <tr><td> </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> </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b11">setRouting</a> (bool enable)</td></tr> <tr><td> </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> </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b12">setNoDelay</a> (bool enable)</td></tr> <tr><td> </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> </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> </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> </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> </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> </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#b15">Socket</a> (const Socket &source)</td></tr> <tr><td> </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 </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> </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:: { ... } </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> </td><td valign=bottom><a class="el" href="classost_1_1_socket.html#n10">so</a></td></tr> <tr><td> </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> </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 </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 </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 </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 </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 </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 </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 </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 </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 </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 <<a href="mailto:dyfet@ostel.com">dyfet@ostel.com</a>> </dl> <p> <hr><h2>Constructor & 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">( </td> <td class="md">int</td> <td class="mdname"> <em>domain</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md">int</td> <td class="mdname"> <em>type</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md">int</td> <td class="mdname"> <em>protocol</em> = 0</td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </td><td> socket domain to use. </td></tr> <tr><td valign=top><em>type </em> </td><td> base type and protocol family of the socket. </td></tr> <tr><td valign=top><em>protocol </em> </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">( </td> <td class="md"><a class="el" href="socket_8h.html#a2">SOCKET</a></td> <td class="mdname1"> <em>fd</em> </td> <td class="md">) </td> <td class="md"><code> [protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </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">( </td> <td class="md">const Socket &</td> <td class="mdname1"> <em>source</em> </td> <td class="md">) </td> <td class="md"><code> [protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </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">( </td> <td class="mdname1"> </td> <td class="md">) </td> <td class="md"><code> [virtual]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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">( </td> <td class="md">const <a class="el" href="classost_1_1_inet_mcast_address.html">InetMcastAddress</a> &</td> <td class="mdname1"> <em>ia</em> </td> <td class="md">) </td> <td class="md"><code> [protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </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">( </td> <td class="md">char *</td> <td class="mdname1"> <em>estr</em> </td> <td class="md">) </td> <td class="md"><code> [inline, protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </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">( </td> <td class="md"><a class="el" href="namespaceost.html#a94">sockerror_t</a></td> <td class="mdname"> <em>error</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md">char *</td> <td class="mdname"> <em>errstr</em> = NULL</td> </tr> <tr> <td></td> <td class="md">) </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> </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> </td><td> defined socket error id. </td></tr> <tr><td valign=top><em>errstr </em> </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">( </td> <td class="md">const <a class="el" href="classost_1_1_inet_mcast_address.html">InetMcastAddress</a> &</td> <td class="mdname1"> <em>ia</em> </td> <td class="md">) </td> <td class="md"><code> [protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </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">( </td> <td class="md">char *</td> <td class="mdname"> <em>buf</em>, </td> </tr> <tr> <td></td> <td></td> <td class="md">size_t</td> <td class="mdname"> <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"> <em>timeout</em> = 0</td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </td><td> to string. </td></tr> <tr><td valign=top><em>maximum </em> </td><td> length to read. </td></tr> <tr><td valign=top><em>timeout </em> </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">( </td> <td class="md">void</td> <td class="mdname1"> </td> <td class="md">) </td> <td class="md"><code> [protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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">( </td> <td class="md">void</td> <td class="mdname1"> </td> <td class="md">) </td> <td class="md"><code> [protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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">( </td> <td class="md">void</td> <td class="mdname1"> </td> <td class="md">) </td> <td class="md"> const<code> [inline]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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">( </td> <td class="md">void</td> <td class="mdname1"> </td> <td class="md">) </td> <td class="md"> const<code> [inline]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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">( </td> <td class="md"><a class="el" href="namespaceost.html#a97">tpport_t</a> *</td> <td class="mdname1"> <em>port</em> = NULL </td> <td class="md">) </td> <td class="md"> const</td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </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">( </td> <td class="md"><a class="el" href="namespaceost.html#a97">tpport_t</a> *</td> <td class="mdname1"> <em>port</em> = NULL </td> <td class="md">) </td> <td class="md"> const</td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </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">( </td> <td class="md"><a class="el" href="namespaceost.html#a97">tpport_t</a> *</td> <td class="mdname1"> <em>port</em> = NULL </td> <td class="md">) </td> <td class="md"> const</td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </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">( </td> <td class="md">void</td> <td class="mdname1"> </td> <td class="md">) </td> <td class="md"> const</td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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">( </td> <td class="md">void</td> <td class="mdname1"> </td> <td class="md">) </td> <td class="md"> const<code> [inline]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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">( </td> <td class="md">void</td> <td class="mdname1"> </td> <td class="md">) </td> <td class="md"> const</td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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">( </td> <td class="md"><a class="el" href="namespaceost.html#a96">sockpend_t</a></td> <td class="mdname"> <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"> <em>timeout</em> = TIMEOUT_INF</td> </tr> <tr> <td></td> <td class="md">) </td> <td class="md" colspan="2"><code> [virtual]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </td><td> check to perform. </td></tr> <tr><td valign=top><em>timeout </em> </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">( </td> <td class="md">void</td> <td class="mdname1"> </td> <td class="md">) </td> <td class="md"> const<code> [inline]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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">( </td> <td class="md">void</td> <td class="mdname1"> </td> <td class="md">) </td> <td class="md"> const</td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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& ost::Socket::operator= </td> <td class="md">( </td> <td class="md">const Socket &</td> <td class="mdname1"> <em>from</em> </td> <td class="md">) </td> <td class="md"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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">( </td> <td class="md">bool</td> <td class="mdname1"> <em>enable</em> </td> <td class="md">) </td> <td class="md"><code> [protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </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">( </td> <td class="md">bool</td> <td class="mdname1"> <em>immediate</em> </td> <td class="md">) </td> <td class="md"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </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">( </td> <td class="md">bool</td> <td class="mdname1"> <em>enable</em> </td> <td class="md">) </td> <td class="md"><code> [inline, protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </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">( </td> <td class="md">bool</td> <td class="mdname1"> <em>enable</em> </td> <td class="md">) </td> <td class="md"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </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">( </td> <td class="md">bool</td> <td class="mdname1"> <em>linger</em> </td> <td class="md">) </td> <td class="md"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </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">( </td> <td class="md">bool</td> <td class="mdname1"> <em>enable</em> </td> <td class="md">) </td> <td class="md"><code> [protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </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">( </td> <td class="md">bool</td> <td class="mdname1"> <em>enable</em> </td> <td class="md">) </td> <td class="md"><code> [protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </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">( </td> <td class="md">bool</td> <td class="mdname1"> <em>enable</em> </td> <td class="md">) </td> <td class="md"><code> [protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </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">( </td> <td class="md">bool</td> <td class="mdname1"> <em>enable</em> </td> <td class="md">) </td> <td class="md"><code> [protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </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">( </td> <td class="md">unsigned char</td> <td class="mdname1"> <em>ttl</em> </td> <td class="md">) </td> <td class="md"><code> [protected]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </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">( </td> <td class="md"><a class="el" href="namespaceost.html#a95">socktos_t</a></td> <td class="mdname1"> <em>tos</em> </td> <td class="md">) </td> <td class="md"></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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>, © 1997-2001</small></address> </body> </html>