Sophie

Sophie

distrib > Mandriva > 2010.2 > i586 > media > contrib-backports > by-pkgid > 4f5f2dc0f55b453456458df885792b0b > files > 313

ucommon-doc-5.0.4-1mdv2010.2.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>ucommon: ucommon::Socket Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="a00208.html">ucommon</a>::<a class="el" href="a00140.html">Socket</a>
  </div>
</div>
<div class="contents">
<h1>ucommon::Socket Class Reference</h1><!-- doxytag: class="ucommon::Socket" -->
<p>A generic socket base class.  
<a href="#_details">More...</a></p>

<p><code>#include &lt;<a class="el" href="a00198_source.html">socket.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for ucommon::Socket:</div>
<div class="dynsection">
<div class="center"><img src="a00526.png" border="0" usemap="#ucommon_1_1_socket_inherit__map" alt="Inheritance graph"/></div>
<map name="ucommon_1_1_socket_inherit__map" id="ucommon_1_1_socket_inherit__map">
<area shape="rect" id="node3" href="a00068.html" title="A bound socket used to listen for inbound socket connections." alt="" coords="5,80,237,107"/><area shape="rect" id="node7" href="a00151.html" title="A generic tcp socket class that offers i/o buffering." alt="" coords="261,80,464,107"/><area shape="rect" id="node5" href="a00152.html" title="A generic tcp server class." alt="" coords="20,155,223,181"/><area shape="rect" id="node9" href="a00143.html" title="Secure socket buffer." alt="" coords="261,155,464,181"/></map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00141.html">address</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A generic socket address class.  <a href="a00141.html#_details">More...</a><br/></td></tr>
<tr><td colspan="2"><h2>Public Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">External definition of fd_set type.  <a href="#a6462ee1ecac78717d60763defea25166"></a><br/></td></tr>
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a715720b26448ebf57604bfbc731cc85b">blocking</a> (bool enable)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set socket blocking I/O mode.  <a href="#a715720b26448ebf57604bfbc731cc85b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a25eec044bc5256598b0e62c0e1ecd52d">broadcast</a> (bool enable)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set socket for unicast mode broadcasts.  <a href="#a25eec044bc5256598b0e62c0e1ecd52d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aafcf7de6f4ecd569677a6526f64a6a95"></a><!-- doxytag: member="ucommon::Socket::cancel" ref="aafcf7de6f4ecd569677a6526f64a6a95" args="(void)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#aafcf7de6f4ecd569677a6526f64a6a95">cancel</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cancel pending i/o by shutting down the socket. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a5a227ad13bd0962642f2f8cd727d6d6a">connectto</a> (struct addrinfo *list)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Connect our socket to a remote host from an address list.  <a href="#a5a227ad13bd0962642f2f8cd727d6d6a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a5483d360a10debe3ad439fe84be66153">disconnect</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Disconnect a connected socket.  <a href="#a5483d360a10debe3ad439fe84be66153"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a8d88dffe58667667e77a1d88b2be53d2">drop</a> (struct addrinfo *list)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Drop socket from multicast group.  <a href="#a8d88dffe58667667e77a1d88b2be53d2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a13572bd97949faec1c0c18808f29fdd6"></a><!-- doxytag: member="ucommon::Socket::err" ref="a13572bd97949faec1c0c18808f29fdd6" args="(void) const " -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a13572bd97949faec1c0c18808f29fdd6">err</a> (void) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get error code. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a7c4c2b94e8c1496f38b60248153428a9">getError</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get socket error code.  <a href="#a7c4c2b94e8c1496f38b60248153428a9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a6b65f392128da6dc2cd1075355dbb1e1">getPending</a> (void) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of bytes of data in the socket receive buffer.  <a href="#a6b65f392128da6dc2cd1075355dbb1e1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a30310656626c23c9b42493a95129f984">gettype</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the type of a socket.  <a href="#a30310656626c23c9b42493a95129f984"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a5879f2cfbdf0c64c1d14f29c6f1a2d85">isConnected</a> (void) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Test if socket is connected.  <a href="#a5879f2cfbdf0c64c1d14f29c6f1a2d85"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a2665bb71a78b555999a7719a0c353920">isPending</a> (unsigned value) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">See the number of bytes in the receive queue.  <a href="#a2665bb71a78b555999a7719a0c353920"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a207fa5bb291ac59980fd8a7df0ba3cb3">join</a> (struct addrinfo *list)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Join socket to multicast group.  <a href="#a207fa5bb291ac59980fd8a7df0ba3cb3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a926f38308b4f3c722850de3e6f8e63fb">keepalive</a> (bool enable)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set socket for keepalive packets.  <a href="#a926f38308b4f3c722850de3e6f8e63fb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#aa28f3e878b5f9669d68366f13b7b38f7">loopback</a> (bool enable)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set loopback to read multicast packets we broadcast.  <a href="#aa28f3e878b5f9669d68366f13b7b38f7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a796be21401708e57c87e4b9a5324e147">multicast</a> (unsigned ttl=1)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set multicast mode and multicast broadcast range.  <a href="#a796be21401708e57c87e4b9a5324e147"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#aa76ff5e3a618cb181538b95fd95a7c9f">nodelay</a> (void) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set nodelay option for tcp socket.  <a href="#aa76ff5e3a618cb181538b95fd95a7c9f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#aaec3f9547dcf7c891e126460ed894406">operator bool</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Test if socket is valid.  <a href="#aaec3f9547dcf7c891e126460ed894406"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a052529d07ea8d602b84f6dc6e13059cf">operator socket_t</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the socket descriptor by casting.  <a href="#a052529d07ea8d602b84f6dc6e13059cf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#ad5f214c1801bb80a87709c0a832c98f6">operator!</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Test if socket is invalid.  <a href="#ad5f214c1801bb80a87709c0a832c98f6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">socket_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a14c3ced56f4e1f47f810894fa05d904d">operator*</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the socket descriptor by pointer reference.  <a href="#a14c3ced56f4e1f47f810894fa05d904d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00140.html">Socket</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a504de0200707666b7366021e57ee1ca5">operator=</a> (socket_t <a class="el" href="a00140.html">socket</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assign socket from a socket descriptor.  <a href="#a504de0200707666b7366021e57ee1ca5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a86c2d08060a9246b31ddec7001aa0e27">peek</a> (void *data, size_t number) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Peek at data waiting in the socket receive buffer.  <a href="#a86c2d08060a9246b31ddec7001aa0e27"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#af1e8250e6e79f5790d9e5aa8eff65893">printf</a> (const char *format,...)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Print formatted string to socket.  <a href="#af1e8250e6e79f5790d9e5aa8eff65893"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#ad435aaa7584b533f91016df05541c554">priority</a> (int scheduling)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set packet priority, 0 to 6 unless privileged.  <a href="#ad435aaa7584b533f91016df05541c554"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#aa4506e5b9179f45b484f2e8e134f20a3">readfrom</a> (void *data, size_t number, struct sockaddr_storage *<a class="el" href="a00141.html">address</a>=NULL)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read data from the socket receive buffer.  <a href="#aa4506e5b9179f45b484f2e8e134f20a3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a32d37dde9b1809500f7049e1421707fd">readline</a> (<a class="el" href="a00148.html">string</a> &amp;buffer)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read a string of input from the socket and strip trailing newline.  <a href="#a32d37dde9b1809500f7049e1421707fd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a0d42fc2dc8f4060c586694957177db8a">readline</a> (char *data, size_t size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read a newline of text data from the socket and save in NULL terminated string.  <a href="#a0d42fc2dc8f4060c586694957177db8a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a0d61ce8a80c6cdf164f44e97d19b2e2a">recvsize</a> (unsigned size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the size of the socket receive buffer.  <a href="#a0d61ce8a80c6cdf164f44e97d19b2e2a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8e95b881f8584cb08b841193654f97d"></a><!-- doxytag: member="ucommon::Socket::release" ref="ad8e95b881f8584cb08b841193654f97d" args="(void)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#ad8e95b881f8584cb08b841193654f97d">release</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Shutdown and close the socket. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a5864add5a29537aa1768f075b784b4d1">segsize</a> (unsigned size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set segment size and get mtu of a socket.  <a href="#a5864add5a29537aa1768f075b784b4d1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a533b863372a3efe014573e94c0532a43">sendsize</a> (unsigned size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the size of the socket send buffer.  <a href="#a533b863372a3efe014573e94c0532a43"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a59f2cfe60e83e3c4c067a277406041b6">sendwait</a> (unsigned size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the size to wait before sending.  <a href="#a59f2cfe60e83e3c4c067a277406041b6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#aff663e54e71e359a915bda03eef041bb">setccid</a> (uint8_t ccid)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set ccid of dccp socket.  <a href="#aff663e54e71e359a915bda03eef041bb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a57b410957e1d068ef35717a49343a4f0"></a><!-- doxytag: member="ucommon::Socket::shutdown" ref="a57b410957e1d068ef35717a49343a4f0" args="(void)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a57b410957e1d068ef35717a49343a4f0">shutdown</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Shutdown the socket communication channel. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a6c965a092c8e70c790a437cc81bc9320">Socket</a> (const char *<a class="el" href="a00141.html">address</a>, const char *port, int family=0, int type=0, int protocol=0)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a bound socket.  <a href="#a6c965a092c8e70c790a437cc81bc9320"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a4ee3b6e319686f7174312bb005f851fa">Socket</a> (int family, int type, int protocol=0)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create an unbound socket of a specific type.  <a href="#a4ee3b6e319686f7174312bb005f851fa"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#aae3c26b6a28d3870e233e80270033b94">Socket</a> (struct addrinfo *<a class="el" href="a00141.html">address</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create and connect a socket to an address from an address list.  <a href="#aae3c26b6a28d3870e233e80270033b94"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a18c7510dedbfbd696a18c98930258d9c">Socket</a> (socket_t <a class="el" href="a00140.html">socket</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create socket from existing socket descriptor.  <a href="#a18c7510dedbfbd696a18c98930258d9c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#ab1ba9179e788f84c200a9562d3223554">Socket</a> (const <a class="el" href="a00140.html">Socket</a> &amp;existing)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create socket as duped handle of existing socket.  <a href="#ab1ba9179e788f84c200a9562d3223554"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae19b19ead96d6fb5db2304210dc1b187"></a><!-- doxytag: member="ucommon::Socket::Socket" ref="ae19b19ead96d6fb5db2304210dc1b187" args="()" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#ae19b19ead96d6fb5db2304210dc1b187">Socket</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a socket object for use. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a538dbeb31ee7f88a788aedbeb79aed5e">tos</a> (int type)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the type of service field of outgoing packets.  <a href="#a538dbeb31ee7f88a788aedbeb79aed5e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a0900cd6d7a82cf1608791fbafea679c0">ttl</a> (unsigned char time)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the time to live before packets expire.  <a href="#a0900cd6d7a82cf1608791fbafea679c0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a6db0fec4b888b2bd94bf3ba8c51d9227">wait</a> (<a class="el" href="a00194.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout=<a class="el" href="a00162.html#ad3d270c59686a8af48b731d389c65b1c">Timer::inf</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="a00140.html" title="A generic socket base class.">Socket</a> i/o timer setting.  <a href="#a6db0fec4b888b2bd94bf3ba8c51d9227"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#ad53a0e81f816074be548ffe14ef0dd5a">waitPending</a> (<a class="el" href="a00194.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout=0) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Test for pending input data.  <a href="#ad53a0e81f816074be548ffe14ef0dd5a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a325220475152c80e08bdbddfaee2dd9c">waitSending</a> (<a class="el" href="a00194.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout=0) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Test for output data sent.  <a href="#a325220475152c80e08bdbddfaee2dd9c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a82c4b1cbbe3039b2c01a8e8d57962305">writes</a> (const char *<a class="el" href="a00148.html">string</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write a null terminated string to the socket.  <a href="#a82c4b1cbbe3039b2c01a8e8d57962305"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a2f2ef63b14839b0c57b3a8b051b431d7">writeto</a> (const void *data, size_t number, struct sockaddr *<a class="el" href="a00141.html">address</a>=NULL)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write data to the socket send buffer.  <a href="#a2f2ef63b14839b0c57b3a8b051b431d7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a51c2ce1d56fca3754d4264a490b6664d"></a><!-- doxytag: member="ucommon::Socket::~Socket" ref="a51c2ce1d56fca3754d4264a490b6664d" args="()" -->
virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a51c2ce1d56fca3754d4264a490b6664d">~Socket</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Shutdown, close, and destroy socket. <br/></td></tr>
<tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="a00140.html">Socket</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a8f0e92b4cd863362c46e0a27d11bf83a">acceptfrom</a> (<a class="el" href="a00140.html">Socket</a> &amp;<a class="el" href="a00140.html">socket</a>, struct sockaddr_storage *<a class="el" href="a00141.html">address</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Accept connection through socket.  <a href="#a8f0e92b4cd863362c46e0a27d11bf83a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static socket_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#ad208952caa4a37c31e2ab527dad5723a">acceptfrom</a> (socket_t <a class="el" href="a00140.html">socket</a>, struct sockaddr_storage *<a class="el" href="a00141.html">address</a>=NULL)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Accept a socket connection from a remote host.  <a href="#ad208952caa4a37c31e2ab527dad5723a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a772cdaafae85b66510bf3c6ba4f03e9e">bindto</a> (socket_t <a class="el" href="a00140.html">socket</a>, struct sockaddr *<a class="el" href="a00141.html">address</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bind the socket descriptor to a known interface.  <a href="#a772cdaafae85b66510bf3c6ba4f03e9e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#abcf83018b78b238c608121dcb18d2660">bindto</a> (socket_t <a class="el" href="a00140.html">socket</a>, const char *<a class="el" href="a00141.html">address</a>, const char *service, int protocol=0)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bind the socket descriptor to a known interface and service port.  <a href="#abcf83018b78b238c608121dcb18d2660"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a0f5840276b25f8d454e36999c294c918">blocking</a> (socket_t <a class="el" href="a00140.html">socket</a>, bool enable)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set socket blocking I/O mode of socket descriptor.  <a href="#a0f5840276b25f8d454e36999c294c918"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a0dd9f72feac7e03d72203f69e3f79eaf">broadcast</a> (socket_t <a class="el" href="a00140.html">socket</a>, bool enable)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set socket for unicast mode broadcasts on socket descriptor.  <a href="#a0dd9f72feac7e03d72203f69e3f79eaf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#af3bed81ba0a3a340489ab17bf61f31a9">cancel</a> (socket_t <a class="el" href="a00140.html">socket</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cancel pending i/o by shutting down the socket.  <a href="#af3bed81ba0a3a340489ab17bf61f31a9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a504ccf2d47fe7d2dc61aa59194cd3be4">clear</a> (socket_t <a class="el" href="a00140.html">socket</a>, <a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a> mask)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear a socket entry in a mask.  <a href="#a504ccf2d47fe7d2dc61aa59194cd3be4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a574af071e61155636bbd72a48d8609b9">clear</a> (<a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a> mask)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clear a mask, setting all entries to zero.  <a href="#a574af071e61155636bbd72a48d8609b9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a4d31ab5c02164bc284fa64122e50f602">connectto</a> (<a class="el" href="a00140.html">Socket</a> &amp;<a class="el" href="a00140.html">socket</a>, <a class="el" href="a00141.html">Socket::address</a> &amp;<a class="el" href="a00141.html">address</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Connect a socket.  <a href="#a4d31ab5c02164bc284fa64122e50f602"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a89c30d754f5760b33b2ca7302adbe0bc">connectto</a> (socket_t <a class="el" href="a00140.html">socket</a>, struct addrinfo *list)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Connect socket descriptor to a remote host from an address list.  <a href="#a89c30d754f5760b33b2ca7302adbe0bc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#af250d0c4205b3ebc6cc9d9439a0314b7">copy</a> (struct sockaddr *target, struct sockaddr *origin)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy a socket address.  <a href="#af250d0c4205b3ebc6cc9d9439a0314b7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static socket_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a11c04459340d7fdb6642eef52efa83c0">create</a> (<a class="el" href="a00141.html">Socket::address</a> &amp;<a class="el" href="a00141.html">address</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a connected socket for a service.  <a href="#a11c04459340d7fdb6642eef52efa83c0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static socket_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a464094ee1e11fe09fd7af33573101ae8">create</a> (const char *iface, const char *service, int family=0, int type=0, int protocol=0)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a bound socket for a service.  <a href="#a464094ee1e11fe09fd7af33573101ae8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static socket_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a5f201d6daa302844cf81632d4469de51">create</a> (struct addrinfo *<a class="el" href="a00141.html">address</a>, int type, int protocol)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a connected socket.  <a href="#a5f201d6daa302844cf81632d4469de51"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static socket_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#ab4429c6415adf6180cad7ba6328f4ebf">create</a> (int family, int type, int protocol)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a socket object unbound.  <a href="#ab4429c6415adf6180cad7ba6328f4ebf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#af6e5bbf0385c1f69a5e0c5d53b2eb394">disconnect</a> (<a class="el" href="a00140.html">Socket</a> &amp;<a class="el" href="a00140.html">socket</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Disconnect a connected socket.  <a href="#af6e5bbf0385c1f69a5e0c5d53b2eb394"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#ab8ae9268060fe4076a8bed461ac5f18b">disconnect</a> (socket_t <a class="el" href="a00140.html">socket</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Disconnect a connected socket descriptor.  <a href="#ab8ae9268060fe4076a8bed461ac5f18b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a438d915187257048d12f92870b2b7241">drop</a> (socket_t <a class="el" href="a00140.html">socket</a>, struct addrinfo *list)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Drop socket descriptor from multicast group.  <a href="#a438d915187257048d12f92870b2b7241"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a3784636bcb87c1235ca1fcf2f40e1ba8">equal</a> (struct sockaddr *address1, struct sockaddr *address2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compare socket addresses.  <a href="#a3784636bcb87c1235ca1fcf2f40e1ba8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a1cacfe36507d40e64294762bec9c9837">equalfrom</a> (struct sockaddr_storage *address1, struct sockaddr_storage *address2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compare socket addresses.  <a href="#a1cacfe36507d40e64294762bec9c9837"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a3330aea437aff3a9c2dcd5f1190be923">equalhost</a> (struct sockaddr *address1, struct sockaddr *address2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compare socket host addresses.  <a href="#a3330aea437aff3a9c2dcd5f1190be923"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a5a6e6af208c37cf9d612c72220e9d50a">equalinet</a> (struct <a class="el" href="a00013.html">sockaddr_internet</a> *address1, struct <a class="el" href="a00013.html">sockaddr_internet</a> *address2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compare socket addresses.  <a href="#a5a6e6af208c37cf9d612c72220e9d50a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#aa76d6687b775d379382bf6bdd6631040">error</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return error code of last socket operation,.  <a href="#aa76d6687b775d379382bf6bdd6631040"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a3efb944008efb0480c0e5f4000389395">error</a> (socket_t <a class="el" href="a00140.html">socket</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get socket error code of socket descriptor.  <a href="#a3efb944008efb0480c0e5f4000389395"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#aa5fe6d6955bde28d951913fa36c90780">family</a> (int query)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set default socket family preference for query options when the socket type is otherwise not specified.  <a href="#aa5fe6d6955bde28d951913fa36c90780"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static socklen_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a0f318413909567f0c4f1360b0c3661b1">getaddr</a> (socket_t <a class="el" href="a00140.html">socket</a>, struct sockaddr_storage *<a class="el" href="a00141.html">address</a>, const char *hostname, const char *service)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lookup a host name and service address based on the addressing family and socket type of a socket descriptor.  <a href="#a0f318413909567f0c4f1360b0c3661b1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a8e2fcccad28e38644ad2eedd87983e55">getaddress</a> (struct sockaddr *<a class="el" href="a00141.html">address</a>, char *buffer, socklen_t size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the hostname of a socket address.  <a href="#a8e2fcccad28e38644ad2eedd87983e55"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static struct addrinfo *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a7a157e88abb88a5aaf5853b324ba262d">getaddress</a> (const char *host, const char *service, int type=SOCK_STREAM, int protocol=0)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get an address list directly.  <a href="#a7a157e88abb88a5aaf5853b324ba262d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a0fb6bb5f80627133e1ca023ce61bb4ce">getfamily</a> (struct <a class="el" href="a00013.html">sockaddr_internet</a> &amp;<a class="el" href="a00141.html">address</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the address family of an internet socket address object.  <a href="#a0fb6bb5f80627133e1ca023ce61bb4ce"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#aa3ffa90d3e4c9ee4b50873979f90827e">getfamily</a> (struct sockaddr_storage &amp;<a class="el" href="a00141.html">address</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the address family of a socket address object.  <a href="#aa3ffa90d3e4c9ee4b50873979f90827e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a9e569ace30246dbfaac5f504df5d2be5">getfamily</a> (socket_t <a class="el" href="a00140.html">socket</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the address family of the socket descriptor.  <a href="#a9e569ace30246dbfaac5f504df5d2be5"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static struct addrinfo *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a5dfcdecc5aaadf56a4f40f263a22d9b1">gethint</a> (socket_t <a class="el" href="a00140.html">socket</a>, struct addrinfo *hint)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create an address info lookup hint based on the family and type properties of a socket descriptor.  <a href="#a5dfcdecc5aaadf56a4f40f263a22d9b1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a8d920485ee4aec88d579aaa9445a51e9">gethostname</a> (struct sockaddr *<a class="el" href="a00141.html">address</a>, char *buffer, size_t size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lookup and return the host name associated with a socket address.  <a href="#a8d920485ee4aec88d579aaa9445a51e9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a851d67795c71e99fbd19a90ee78b13ab">getinterface</a> (struct sockaddr *<a class="el" href="a00141.html">address</a>, struct sockaddr *destination)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the socket address of the interface needed to reach a destination address.  <a href="#a851d67795c71e99fbd19a90ee78b13ab"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static socklen_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a88a1cc27fb26417712bbedf17aaa24c7">getlen</a> (struct sockaddr *<a class="el" href="a00141.html">address</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the size of a socket address.  <a href="#a88a1cc27fb26417712bbedf17aaa24c7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#aea7026ee4efc47ce5d0477dcfe7c70b4">getlocal</a> (socket_t <a class="el" href="a00140.html">socket</a>, struct sockaddr_storage *<a class="el" href="a00141.html">address</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get local address to which the socket is bound.  <a href="#aea7026ee4efc47ce5d0477dcfe7c70b4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a80824693cacc59d3081730b85815a9fb">getmask</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a mask from the heap.  <a href="#a80824693cacc59d3081730b85815a9fb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a6e3b0c37706e7f5e2b850a500d79803b">getremote</a> (socket_t <a class="el" href="a00140.html">socket</a>, struct sockaddr_storage *<a class="el" href="a00141.html">address</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get remote address to which the socket is connected.  <a href="#a6e3b0c37706e7f5e2b850a500d79803b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static short&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a59de404c9e07af625a787e1f7426add0">getservice</a> (struct sockaddr *<a class="el" href="a00141.html">address</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the service port of a socket.  <a href="#a59de404c9e07af625a787e1f7426add0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#abdd213cdb039bb4cd793a3ec1eaf88de">gettype</a> (socket_t <a class="el" href="a00140.html">socket</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the type of a socket.  <a href="#abdd213cdb039bb4cd793a3ec1eaf88de"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static short&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a4faec96b1510a2e02cca84219fda57e1">inetservice</a> (struct <a class="el" href="a00013.html">sockaddr_internet</a> *<a class="el" href="a00141.html">address</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the service port of an inet socket.  <a href="#a4faec96b1510a2e02cca84219fda57e1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#aaf6cefa30cd3777e6b8e45b8b9610e2e">init</a> (const char *program)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize with program name.  <a href="#aaf6cefa30cd3777e6b8e45b8b9610e2e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a261eb6e889fa977fb90fdeb0fb9cf7bf"></a><!-- doxytag: member="ucommon::Socket::init" ref="a261eb6e889fa977fb90fdeb0fb9cf7bf" args="(void)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a261eb6e889fa977fb90fdeb0fb9cf7bf">init</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize socket subsystem. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a5021ee2e8d1fb91f29768fd8266ae8c1">isNull</a> (const char *<a class="el" href="a00148.html">string</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Simple function to validate that a given IP address string is a "zero" address.  <a href="#a5021ee2e8d1fb91f29768fd8266ae8c1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#aa0980a516b06fadd9d4b7f3bd734c8a1">isNumeric</a> (const char *<a class="el" href="a00148.html">string</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Simple function to validate that a given IP address string is a numeric address.  <a href="#aa0980a516b06fadd9d4b7f3bd734c8a1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a4ece461c1fc40f76f3f10b39eb057432">join</a> (socket_t <a class="el" href="a00140.html">socket</a>, struct addrinfo *list)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Join socket descriptor to multicast group.  <a href="#a4ece461c1fc40f76f3f10b39eb057432"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#aff630dce105b70e9d43633eae333d030">keepalive</a> (socket_t <a class="el" href="a00140.html">socket</a>, bool enable)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set socket for keepalive packets for socket descriptor.  <a href="#aff630dce105b70e9d43633eae333d030"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#aef3b0b59fed0f288b094bc57d4f72ccb">keyhost</a> (struct sockaddr *<a class="el" href="a00141.html">address</a>, unsigned size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a socket host address into a hash map index.  <a href="#aef3b0b59fed0f288b094bc57d4f72ccb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a7026d09bac8f5523c9e8c89b4fc4d7bb">keyindex</a> (struct sockaddr *<a class="el" href="a00141.html">address</a>, unsigned size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a socket address and service into a hash map index.  <a href="#a7026d09bac8f5523c9e8c89b4fc4d7bb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#af9b09326ba4e5cf49df8994c531a89f1">listento</a> (socket_t <a class="el" href="a00140.html">socket</a>, struct sockaddr *<a class="el" href="a00141.html">address</a>, int backlog=5)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bind the socket descriptor to a known interface listen on service port.  <a href="#af9b09326ba4e5cf49df8994c531a89f1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a30e0a5e795f6cc2f0dfc19aa9502a79b">loopback</a> (socket_t <a class="el" href="a00140.html">socket</a>, bool enable)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set loopback to read multicast packets socket descriptor broadcasts.  <a href="#a30e0a5e795f6cc2f0dfc19aa9502a79b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#ae23c66c7981d93c19f22f699d2ebf2e8">multicast</a> (socket_t <a class="el" href="a00140.html">socket</a>, unsigned ttl=1)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set multicast mode and multicast broadcast range for socket descriptor.  <a href="#ae23c66c7981d93c19f22f699d2ebf2e8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a33212a27e1d0777dab86c17c96e52f2d">nodelay</a> (socket_t <a class="el" href="a00140.html">socket</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set tcp nodelay option on socket descriptor.  <a href="#a33212a27e1d0777dab86c17c96e52f2d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#aa5c32c89765fa27a0dec6f4e48697ed8">pending</a> (socket_t <a class="el" href="a00140.html">socket</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of bytes pending in the receive buffer of a socket descriptor.  <a href="#aa5c32c89765fa27a0dec6f4e48697ed8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static ssize_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a7f6966bb8d3484cae26b2aa8b5db3eda">printf</a> (socket_t <a class="el" href="a00140.html">socket</a>, const char *format,...)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Print formatted string to socket.  <a href="#a7f6966bb8d3484cae26b2aa8b5db3eda"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a51c3939cf04777b524afbea514ecebb2">priority</a> (socket_t <a class="el" href="a00140.html">socket</a>, int scheduling)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set packet priority of socket descriptor.  <a href="#a51c3939cf04777b524afbea514ecebb2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#affa6687c4f13fb3d3ac43d87f2c4facd">readfrom</a> (<a class="el" href="a00140.html">Socket</a> &amp;<a class="el" href="a00140.html">socket</a>, char *buffer, size_t size, struct sockaddr_storage *<a class="el" href="a00141.html">address</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">receive from socket object.  <a href="#affa6687c4f13fb3d3ac43d87f2c4facd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static ssize_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a1312d7fe4d5608dba238d020c69ae901">readline</a> (socket_t <a class="el" href="a00140.html">socket</a>, char *data, size_t size, <a class="el" href="a00194.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout=<a class="el" href="a00162.html#ad3d270c59686a8af48b731d389c65b1c">Timer::inf</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read a newline of text data from the socket and save in NULL terminated string.  <a href="#a1312d7fe4d5608dba238d020c69ae901"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static ssize_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a2d36973ad322dfc3457e7916f388ed43">recvfrom</a> (socket_t <a class="el" href="a00140.html">socket</a>, void *buffer, size_t size, int flags=0, struct sockaddr_storage *<a class="el" href="a00141.html">address</a>=NULL)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get data waiting in receive queue.  <a href="#a2d36973ad322dfc3457e7916f388ed43"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static ssize_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#acc76e61bd316298dcfa4707346e0c573">recvinet</a> (socket_t <a class="el" href="a00140.html">socket</a>, void *buffer, size_t size, int flags=0, struct <a class="el" href="a00013.html">sockaddr_internet</a> *<a class="el" href="a00141.html">address</a>=NULL)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get internet data waiting in receive queue.  <a href="#acc76e61bd316298dcfa4707346e0c573"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a03e3d43bb0e1a49f76f15dd7291148f2">recvsize</a> (socket_t <a class="el" href="a00140.html">socket</a>, unsigned size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the receive size of a socket descriptor.  <a href="#a03e3d43bb0e1a49f76f15dd7291148f2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a21deec70059006fa40050edb1f34e011">release</a> (<a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a> mask)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Release a heap allocated mask.  <a href="#a21deec70059006fa40050edb1f34e011"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a1cb51365fc2f35eabd730add7d1e45a3">release</a> (socket_t <a class="el" href="a00140.html">socket</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Release (close) a socket.  <a href="#a1cb51365fc2f35eabd730add7d1e45a3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#abe6dfe4ddbaeb0d8fc7b6ca037d0b13b">release</a> (struct addrinfo *list)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Release an address list directly.  <a href="#abe6dfe4ddbaeb0d8fc7b6ca037d0b13b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static ssize_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#ab7c7951de1b1851679e59e840782daab">replyto</a> (socket_t <a class="el" href="a00140.html">socket</a>, const void *buffer, size_t size, int flags, struct sockaddr_storage *<a class="el" href="a00141.html">address</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send reply on socket.  <a href="#ab7c7951de1b1851679e59e840782daab"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#ae530e816a635756925458c37a80602c3">segsize</a> (socket_t <a class="el" href="a00140.html">socket</a>, unsigned size=0)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set segment size and get MTU.  <a href="#ae530e816a635756925458c37a80602c3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a8ed59ec0304e02e65ee35a09ca78a746">select</a> (int max, <a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a> read, <a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a> write, <a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a> error, <a class="el" href="a00194.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Select with timeout.  <a href="#a8ed59ec0304e02e65ee35a09ca78a746"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a32bde415a1606ffa5bfb924da005791e">select</a> (int max, <a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a> read, <a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a> write, <a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a> error)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Select without timeout.  <a href="#a32bde415a1606ffa5bfb924da005791e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static ssize_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#acce8ff3b9bc97dab0c68260571d87954">sendinet</a> (socket_t <a class="el" href="a00140.html">socket</a>, const void *buffer, size_t size, int flags, struct <a class="el" href="a00013.html">sockaddr_internet</a> *<a class="el" href="a00141.html">address</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send to internet socket.  <a href="#acce8ff3b9bc97dab0c68260571d87954"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#ab8eb922560c2c3be760dfe1fb13acea1">sendsize</a> (socket_t <a class="el" href="a00140.html">socket</a>, unsigned size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the send size of a socket descriptor.  <a href="#ab8eb922560c2c3be760dfe1fb13acea1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static ssize_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#aac3cb1519e30eca1a5dc471e91e3a96b">sendto</a> (socket_t <a class="el" href="a00140.html">socket</a>, const void *buffer, size_t size, int flags=0, struct sockaddr *<a class="el" href="a00141.html">address</a>=NULL)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send data on socket.  <a href="#aac3cb1519e30eca1a5dc471e91e3a96b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a9926fe133873448d73b4e4854c2bf7e3">sendwait</a> (socket_t <a class="el" href="a00140.html">socket</a>, unsigned size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the size to wait before sending.  <a href="#a9926fe133873448d73b4e4854c2bf7e3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a0d3bcb37023adf17c058a4b77d0d1ba4">set</a> (socket_t <a class="el" href="a00140.html">socket</a>, <a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a> mask)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a socket entry in a mask.  <a href="#a0d3bcb37023adf17c058a4b77d0d1ba4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#ae91e4b496c71b3c0ad8dc23d2962d6dd">setccid</a> (socket_t <a class="el" href="a00140.html">socket</a>, uint8_t ccid)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set congestion control id.  <a href="#ae91e4b496c71b3c0ad8dc23d2962d6dd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#aa7e4687726d4e7efad80565d86dc672f">store</a> (struct <a class="el" href="a00013.html">sockaddr_internet</a> *storage, struct sockaddr *<a class="el" href="a00141.html">address</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Store an address into an internet address object.  <a href="#aa7e4687726d4e7efad80565d86dc672f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#aab407b6618ba23ee474927d5d063f806">store</a> (struct sockaddr_storage *storage, struct sockaddr *<a class="el" href="a00141.html">address</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Store an address into an address object.  <a href="#aab407b6618ba23ee474927d5d063f806"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#ab31a21fdb819b9ecdf0181222455dc2e">subnet</a> (struct sockaddr *address1, struct sockaddr *address2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">See if both addresses are in the same subnet.  <a href="#ab31a21fdb819b9ecdf0181222455dc2e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#ab1efdbbf27c9a76533231eb817a954fb">test</a> (socket_t <a class="el" href="a00140.html">socket</a>, <a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a> mask)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Test a socket entry in a mask.  <a href="#ab1efdbbf27c9a76533231eb817a954fb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a4a1ec1ace475599f0190e2c65d315f04">tos</a> (socket_t <a class="el" href="a00140.html">socket</a>, int type)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set type of service of socket descriptor.  <a href="#a4a1ec1ace475599f0190e2c65d315f04"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#aa153e9eb7065195652c307d2c6db7cff">ttl</a> (socket_t <a class="el" href="a00140.html">socket</a>, unsigned char time)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the time to live for the socket descriptor.  <a href="#aa153e9eb7065195652c307d2c6db7cff"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a377280450c5030031fae24988939d9eb">v4mapping</a> (bool enable)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the default socket behavior for v6-v4 mapping.  <a href="#a377280450c5030031fae24988939d9eb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a2c6fde5426967bbcb4406c8864f17760">wait</a> (socket_t <a class="el" href="a00140.html">socket</a>, <a class="el" href="a00194.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a> timeout=0)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Test for pending input data.  <a href="#a2c6fde5426967bbcb4406c8864f17760"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#a6b076da48b05265e5bf70f3dd92ac42a">writeto</a> (<a class="el" href="a00140.html">Socket</a> &amp;<a class="el" href="a00140.html">socket</a>, const char *buffer, size_t size, struct sockaddr *<a class="el" href="a00141.html">address</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send to socket object.  <a href="#a6b076da48b05265e5bf70f3dd92ac42a"></a><br/></td></tr>
<tr><td colspan="2"><h2>Static Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f7083cee71fe4092a9cbb9186e3488c"></a><!-- doxytag: member="ucommon::Socket::masksize" ref="a3f7083cee71fe4092a9cbb9186e3488c" args="" -->
static const size_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>masksize</b></td></tr>
<tr><td colspan="2"><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f61071bc3047744971de98c2a41c6e1"></a><!-- doxytag: member="ucommon::Socket::ioerr" ref="a3f61071bc3047744971de98c2a41c6e1" args="" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><b>ioerr</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a58efefb3dcbc2c926d20b001d29c6513"></a><!-- doxytag: member="ucommon::Socket::iowait" ref="a58efefb3dcbc2c926d20b001d29c6513" args="" -->
<a class="el" href="a00194.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>iowait</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed423e0fdbbfcf589acd8bd54f4f78b2"></a><!-- doxytag: member="ucommon::Socket::so" ref="aed423e0fdbbfcf589acd8bd54f4f78b2" args="" -->
socket_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>so</b></td></tr>
<tr><td colspan="2"><h2>Friends</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a326f6c5c6a0fa5c5572e68f9ea97e2b8"></a><!-- doxytag: member="ucommon::Socket::address" ref="a326f6c5c6a0fa5c5572e68f9ea97e2b8" args="" -->
class&nbsp;</td><td class="memItemRight" valign="bottom"><b>address</b></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>A generic socket base class. </p>
<p>This class can be used directly or as a base class for building network protocol stacks. This common base tries to handle UDP and TCP sockets, as well as support multicast, IPV4/IPV6 addressing, and additional addressing domains (such as Unix domain sockets). </p>
<dl class="author"><dt><b>Author:</b></dt><dd>David Sugar &lt;<a href="mailto:dyfet@gnutelephony.org">dyfet@gnutelephony.org</a>&gt; </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l00301">301</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>
<hr/><h2>Member Typedef Documentation</h2>
<a class="anchor" id="a6462ee1ecac78717d60763defea25166"></a><!-- doxytag: member="ucommon::Socket::set_t" ref="a6462ee1ecac78717d60763defea25166" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void* <a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">ucommon::Socket::set_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>External definition of fd_set type. </p>
<p>This is used to generate select calls which may be wrapped through an internal function such as socks proxy or pth library. </p>

<p>Definition at line <a class="el" href="a00198_source.html#l00331">331</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

</div>
</div>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ab1ba9179e788f84c200a9562d3223554"></a><!-- doxytag: member="ucommon::Socket::Socket" ref="ab1ba9179e788f84c200a9562d3223554" args="(const Socket &amp;existing)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ucommon::Socket::Socket </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00140.html">Socket</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>existing</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create socket as duped handle of existing socket. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>existing</em>&nbsp;</td><td>socket to dup. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a18c7510dedbfbd696a18c98930258d9c"></a><!-- doxytag: member="ucommon::Socket::Socket" ref="a18c7510dedbfbd696a18c98930258d9c" args="(socket_t socket)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ucommon::Socket::Socket </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create socket from existing socket descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor to use. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aae3c26b6a28d3870e233e80270033b94"></a><!-- doxytag: member="ucommon::Socket::Socket" ref="aae3c26b6a28d3870e233e80270033b94" args="(struct addrinfo *address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ucommon::Socket::Socket </td>
          <td>(</td>
          <td class="paramtype">struct addrinfo *&nbsp;</td>
          <td class="paramname"> <em>address</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create and connect a socket to an address from an address list. </p>
<p>The type of socket created is based on the type we are connecting to. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>list to connect with. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a4ee3b6e319686f7174312bb005f851fa"></a><!-- doxytag: member="ucommon::Socket::Socket" ref="a4ee3b6e319686f7174312bb005f851fa" args="(int family, int type, int protocol=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ucommon::Socket::Socket </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>family</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>protocol</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create an unbound socket of a specific type. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>family</em>&nbsp;</td><td>of our new socket. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>(stream, udp, etc) of our new socket. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>protocol</em>&nbsp;</td><td>number of our new socket.' </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a6c965a092c8e70c790a437cc81bc9320"></a><!-- doxytag: member="ucommon::Socket::Socket" ref="a6c965a092c8e70c790a437cc81bc9320" args="(const char *address, const char *port, int family=0, int type=0, int protocol=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ucommon::Socket::Socket </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>port</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>family</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>type</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>protocol</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a bound socket. </p>
<p>If one wishes to listen for connections on a protocol, then <a class="el" href="a00068.html" title="A bound socket used to listen for inbound socket connections.">ListenSocket</a> should be used instead. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>to bind or "*" for all. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>port</em>&nbsp;</td><td>number of service to bind. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>family</em>&nbsp;</td><td>to bind as. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>of socket to bind (stream, udp, etc). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>protocol</em>&nbsp;</td><td>of socket to bind. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a8f0e92b4cd863362c46e0a27d11bf83a"></a><!-- doxytag: member="ucommon::Socket::acceptfrom" ref="a8f0e92b4cd863362c46e0a27d11bf83a" args="(Socket &amp;socket, struct sockaddr_storage *address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="a00140.html">Socket</a> ucommon::Socket::acceptfrom </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00140.html">Socket</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>address</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Accept connection through socket. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>object to accept from. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>accepting from. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>socket accepted. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l01363">1363</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00140_a8f0e92b4cd863362c46e0a27d11bf83a_cgraph.png" border="0" usemap="#a00140_a8f0e92b4cd863362c46e0a27d11bf83a_cgraph_map" alt=""></div>
</div>
</p>

</div>
</div>
<a class="anchor" id="ad208952caa4a37c31e2ab527dad5723a"></a><!-- doxytag: member="ucommon::Socket::acceptfrom" ref="ad208952caa4a37c31e2ab527dad5723a" args="(socket_t socket, struct sockaddr_storage *address=NULL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static socket_t ucommon::Socket::acceptfrom </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>address</em> = <code>NULL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Accept a socket connection from a remote host. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor to accept from. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>of socket accepting. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>new socket accepted. </dd></dl>

</div>
</div>
<a class="anchor" id="a772cdaafae85b66510bf3c6ba4f03e9e"></a><!-- doxytag: member="ucommon::Socket::bindto" ref="a772cdaafae85b66510bf3c6ba4f03e9e" args="(socket_t socket, struct sockaddr *address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::bindto </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>address</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Bind the socket descriptor to a known interface. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor to bind. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>of interface to bind to. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 if error. </dd></dl>

</div>
</div>
<a class="anchor" id="abcf83018b78b238c608121dcb18d2660"></a><!-- doxytag: member="ucommon::Socket::bindto" ref="abcf83018b78b238c608121dcb18d2660" args="(socket_t socket, const char *address, const char *service, int protocol=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::bindto </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>service</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>protocol</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Bind the socket descriptor to a known interface and service port. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor to bind. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>to bind to or "*" for all. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>service</em>&nbsp;</td><td>port to bind. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>protocol</em>&nbsp;</td><td>to use or 0 if default. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 if error. </dd></dl>

</div>
</div>
<a class="anchor" id="a0f5840276b25f8d454e36999c294c918"></a><!-- doxytag: member="ucommon::Socket::blocking" ref="a0f5840276b25f8d454e36999c294c918" args="(socket_t socket, bool enable)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::blocking </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>enable</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set socket blocking I/O mode of socket descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>enable</em>&nbsp;</td><td>true for blocking I/O. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 if success, -1 if error. </dd></dl>

</div>
</div>
<a class="anchor" id="a715720b26448ebf57604bfbc731cc85b"></a><!-- doxytag: member="ucommon::Socket::blocking" ref="a715720b26448ebf57604bfbc731cc85b" args="(bool enable)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ucommon::Socket::blocking </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>enable</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set socket blocking I/O mode. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>enable</em>&nbsp;</td><td>true for blocking I/O. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 if error. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l00729">729</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00140_a715720b26448ebf57604bfbc731cc85b_cgraph.png" border="0" usemap="#a00140_a715720b26448ebf57604bfbc731cc85b_cgraph_map" alt=""></div>
</div>
</p>

</div>
</div>
<a class="anchor" id="a0dd9f72feac7e03d72203f69e3f79eaf"></a><!-- doxytag: member="ucommon::Socket::broadcast" ref="a0dd9f72feac7e03d72203f69e3f79eaf" args="(socket_t socket, bool enable)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::broadcast </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>enable</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set socket for unicast mode broadcasts on socket descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>enable</em>&nbsp;</td><td>broadcasting if true. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 if success, -1 if error. </dd></dl>

</div>
</div>
<a class="anchor" id="a25eec044bc5256598b0e62c0e1ecd52d"></a><!-- doxytag: member="ucommon::Socket::broadcast" ref="a25eec044bc5256598b0e62c0e1ecd52d" args="(bool enable)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ucommon::Socket::broadcast </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>enable</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set socket for unicast mode broadcasts. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>enable</em>&nbsp;</td><td>broadcasting if true. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 if error. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l00713">713</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00140_a25eec044bc5256598b0e62c0e1ecd52d_cgraph.png" border="0" usemap="#a00140_a25eec044bc5256598b0e62c0e1ecd52d_cgraph_map" alt=""></div>
</div>
</p>

</div>
</div>
<a class="anchor" id="af3bed81ba0a3a340489ab17bf61f31a9"></a><!-- doxytag: member="ucommon::Socket::cancel" ref="af3bed81ba0a3a340489ab17bf61f31a9" args="(socket_t socket)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void ucommon::Socket::cancel </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Cancel pending i/o by shutting down the socket. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>to shutdown. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a504ccf2d47fe7d2dc61aa59194cd3be4"></a><!-- doxytag: member="ucommon::Socket::clear" ref="a504ccf2d47fe7d2dc61aa59194cd3be4" args="(socket_t socket, set_t mask)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void ucommon::Socket::clear </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a>&nbsp;</td>
          <td class="paramname"> <em>mask</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Clear a socket entry in a mask. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>entry to clear. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mask</em>&nbsp;</td><td>to set entry in. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a574af071e61155636bbd72a48d8609b9"></a><!-- doxytag: member="ucommon::Socket::clear" ref="a574af071e61155636bbd72a48d8609b9" args="(set_t mask)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void ucommon::Socket::clear </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a>&nbsp;</td>
          <td class="paramname"> <em>mask</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Clear a mask, setting all entries to zero. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>mask</em>&nbsp;</td><td>to clear. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a4d31ab5c02164bc284fa64122e50f602"></a><!-- doxytag: member="ucommon::Socket::connectto" ref="a4d31ab5c02164bc284fa64122e50f602" args="(Socket &amp;socket, Socket::address &amp;address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void ucommon::Socket::connectto </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00140.html">Socket</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00141.html">Socket::address</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>address</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Connect a socket. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>object to connect. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>list to connect to. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="a00198_source.html#l01347">1347</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00140_a4d31ab5c02164bc284fa64122e50f602_cgraph.png" border="0" usemap="#a00140_a4d31ab5c02164bc284fa64122e50f602_cgraph_map" alt=""></div>
<map name="a00140_a4d31ab5c02164bc284fa64122e50f602_cgraph_map" id="a00140_a4d31ab5c02164bc284fa64122e50f602_cgraph">
<area shape="rect" id="node3" href="a00140.html#a5a227ad13bd0962642f2f8cd727d6d6a" title="Connect our socket to a remote host from an address list." alt="" coords="336,5,619,32"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a89c30d754f5760b33b2ca7302adbe0bc"></a><!-- doxytag: member="ucommon::Socket::connectto" ref="a89c30d754f5760b33b2ca7302adbe0bc" args="(socket_t socket, struct addrinfo *list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::connectto </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct addrinfo *&nbsp;</td>
          <td class="paramname"> <em>list</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Connect socket descriptor to a remote host from an address list. </p>
<p>For TCP (and DCCP) sockets, the entire list may be tried. For UDP, connect is only a state and the first valid entry in the list is used. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>of addresses to connect to. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on error. </dd></dl>

</div>
</div>
<a class="anchor" id="a5a227ad13bd0962642f2f8cd727d6d6a"></a><!-- doxytag: member="ucommon::Socket::connectto" ref="a5a227ad13bd0962642f2f8cd727d6d6a" args="(struct addrinfo *list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ucommon::Socket::connectto </td>
          <td>(</td>
          <td class="paramtype">struct addrinfo *&nbsp;</td>
          <td class="paramname"> <em>list</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Connect our socket to a remote host from an address list. </p>
<p>For TCP (and DCCP) sockets, the entire list may be tried. For UDP, connect is only a state and the first valid entry in the list is used. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>of addresses to connect to. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success or error. </dd></dl>

</div>
</div>
<a class="anchor" id="af250d0c4205b3ebc6cc9d9439a0314b7"></a><!-- doxytag: member="ucommon::Socket::copy" ref="af250d0c4205b3ebc6cc9d9439a0314b7" args="(struct sockaddr *target, struct sockaddr *origin)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static unsigned ucommon::Socket::copy </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>target</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>origin</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Copy a socket address. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>target</em>&nbsp;</td><td>address pointer to copy into. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>origin</em>&nbsp;</td><td>address pointer to copy from. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes copied, 0 if invalid. </dd></dl>

</div>
</div>
<a class="anchor" id="a11c04459340d7fdb6642eef52efa83c0"></a><!-- doxytag: member="ucommon::Socket::create" ref="a11c04459340d7fdb6642eef52efa83c0" args="(Socket::address &amp;address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static socket_t ucommon::Socket::create </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00141.html">Socket::address</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>address</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a connected socket for a service. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>of service for connect. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>socket descriptor. </dd></dl>

</div>
</div>
<a class="anchor" id="a464094ee1e11fe09fd7af33573101ae8"></a><!-- doxytag: member="ucommon::Socket::create" ref="a464094ee1e11fe09fd7af33573101ae8" args="(const char *iface, const char *service, int family=0, int type=0, int protocol=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static socket_t ucommon::Socket::create </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>iface</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>service</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>family</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>type</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>protocol</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a bound socket for a service. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>iface</em>&nbsp;</td><td>to bind. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>service</em>&nbsp;</td><td>port to bind. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>family</em>&nbsp;</td><td>to select or AF_UNSPEC </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>of socket to create. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>protocol</em>&nbsp;</td><td>of socket to create. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>socket descriptor created or INVALID_SOCKET. </dd></dl>

</div>
</div>
<a class="anchor" id="a5f201d6daa302844cf81632d4469de51"></a><!-- doxytag: member="ucommon::Socket::create" ref="a5f201d6daa302844cf81632d4469de51" args="(struct addrinfo *address, int type, int protocol)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static socket_t ucommon::Socket::create </td>
          <td>(</td>
          <td class="paramtype">struct addrinfo *&nbsp;</td>
          <td class="paramname"> <em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>protocol</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a connected socket. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>list to connect to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>of socket to create. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>protocol</em>&nbsp;</td><td>of socket. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>socket descriptor created or INVALID_SOCKET. </dd></dl>

</div>
</div>
<a class="anchor" id="ab4429c6415adf6180cad7ba6328f4ebf"></a><!-- doxytag: member="ucommon::Socket::create" ref="ab4429c6415adf6180cad7ba6328f4ebf" args="(int family, int type, int protocol)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static socket_t ucommon::Socket::create </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>family</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>protocol</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a socket object unbound. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>family</em>&nbsp;</td><td>of socket. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>of socket. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>protocol</em>&nbsp;</td><td>of socket. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>socket descriptor created or INVALID_SOCKET. </dd></dl>

</div>
</div>
<a class="anchor" id="af6e5bbf0385c1f69a5e0c5d53b2eb394"></a><!-- doxytag: member="ucommon::Socket::disconnect" ref="af6e5bbf0385c1f69a5e0c5d53b2eb394" args="(Socket &amp;socket)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void ucommon::Socket::disconnect </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00140.html">Socket</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>socket</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Disconnect a connected socket. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>object to disconnect. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="a00198_source.html#l01354">1354</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00140_af6e5bbf0385c1f69a5e0c5d53b2eb394_cgraph.png" border="0" usemap="#a00140_af6e5bbf0385c1f69a5e0c5d53b2eb394_cgraph_map" alt=""></div>
<map name="a00140_af6e5bbf0385c1f69a5e0c5d53b2eb394_cgraph_map" id="a00140_af6e5bbf0385c1f69a5e0c5d53b2eb394_cgraph">
<area shape="rect" id="node3" href="a00140.html#a5483d360a10debe3ad439fe84be66153" title="Disconnect a connected socket." alt="" coords="348,5,639,32"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="ab8ae9268060fe4076a8bed461ac5f18b"></a><!-- doxytag: member="ucommon::Socket::disconnect" ref="ab8ae9268060fe4076a8bed461ac5f18b" args="(socket_t socket)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::disconnect </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Disconnect a connected socket descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on error. </dd></dl>

</div>
</div>
<a class="anchor" id="a5483d360a10debe3ad439fe84be66153"></a><!-- doxytag: member="ucommon::Socket::disconnect" ref="a5483d360a10debe3ad439fe84be66153" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ucommon::Socket::disconnect </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Disconnect a connected socket. </p>
<p>Depending on the implementation, this might be done by connecting to AF_UNSPEC, connecting to a 0 address, or connecting to self. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success or error. </dd></dl>

</div>
</div>
<a class="anchor" id="a438d915187257048d12f92870b2b7241"></a><!-- doxytag: member="ucommon::Socket::drop" ref="a438d915187257048d12f92870b2b7241" args="(socket_t socket, struct addrinfo *list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::drop </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct addrinfo *&nbsp;</td>
          <td class="paramname"> <em>list</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Drop socket descriptor from multicast group. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>of groups to drop. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on error. </dd></dl>

</div>
</div>
<a class="anchor" id="a8d88dffe58667667e77a1d88b2be53d2"></a><!-- doxytag: member="ucommon::Socket::drop" ref="a8d88dffe58667667e77a1d88b2be53d2" args="(struct addrinfo *list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ucommon::Socket::drop </td>
          <td>(</td>
          <td class="paramtype">struct addrinfo *&nbsp;</td>
          <td class="paramname"> <em>list</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Drop socket from multicast group. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>of groups to drop. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on error. </dd></dl>

</div>
</div>
<a class="anchor" id="a3784636bcb87c1235ca1fcf2f40e1ba8"></a><!-- doxytag: member="ucommon::Socket::equal" ref="a3784636bcb87c1235ca1fcf2f40e1ba8" args="(struct sockaddr *address1, struct sockaddr *address2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static bool ucommon::Socket::equal </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>address1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>address2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Compare socket addresses. </p>
<p>Test if the address and service matches or if there is no service, then just the host address values. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address1</em>&nbsp;</td><td>to compare. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address2</em>&nbsp;</td><td>to compare. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if same family and equal. </dd></dl>

</div>
</div>
<a class="anchor" id="a1cacfe36507d40e64294762bec9c9837"></a><!-- doxytag: member="ucommon::Socket::equalfrom" ref="a1cacfe36507d40e64294762bec9c9837" args="(struct sockaddr_storage *address1, struct sockaddr_storage *address2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static bool ucommon::Socket::equalfrom </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>address1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>address2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Compare socket addresses. </p>
<p>Test if the stored addresses received match. or if there is no service, then just the host address values. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address1</em>&nbsp;</td><td>to compare. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address2</em>&nbsp;</td><td>to compare. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if same family and equal. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l01453">1453</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

</div>
</div>
<a class="anchor" id="a3330aea437aff3a9c2dcd5f1190be923"></a><!-- doxytag: member="ucommon::Socket::equalhost" ref="a3330aea437aff3a9c2dcd5f1190be923" args="(struct sockaddr *address1, struct sockaddr *address2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static bool ucommon::Socket::equalhost </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>address1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>address2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Compare socket host addresses. </p>
<p>Test if the host address matches or if there is no service, then just the host address values. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address1</em>&nbsp;</td><td>to compare. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address2</em>&nbsp;</td><td>to compare. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if same family and equal. </dd></dl>

</div>
</div>
<a class="anchor" id="a5a6e6af208c37cf9d612c72220e9d50a"></a><!-- doxytag: member="ucommon::Socket::equalinet" ref="a5a6e6af208c37cf9d612c72220e9d50a" args="(struct sockaddr_internet *address1, struct sockaddr_internet *address2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static bool ucommon::Socket::equalinet </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="a00013.html">sockaddr_internet</a> *&nbsp;</td>
          <td class="paramname"> <em>address1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="a00013.html">sockaddr_internet</a> *&nbsp;</td>
          <td class="paramname"> <em>address2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Compare socket addresses. </p>
<p>Test if the internet addresses received match. or if there is no service, then just the host address values. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address1</em>&nbsp;</td><td>to compare. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address2</em>&nbsp;</td><td>to compare. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if same family and equal. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l01463">1463</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

</div>
</div>
<a class="anchor" id="aa76d6687b775d379382bf6bdd6631040"></a><!-- doxytag: member="ucommon::Socket::error" ref="aa76d6687b775d379382bf6bdd6631040" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::error </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return error code of last socket operation,. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>errno style error code. </dd></dl>

</div>
</div>
<a class="anchor" id="a3efb944008efb0480c0e5f4000389395"></a><!-- doxytag: member="ucommon::Socket::error" ref="a3efb944008efb0480c0e5f4000389395" args="(socket_t socket)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::error </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get socket error code of socket descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>socket error code. </dd></dl>

</div>
</div>
<a class="anchor" id="aa5fe6d6955bde28d951913fa36c90780"></a><!-- doxytag: member="ucommon::Socket::family" ref="aa5fe6d6955bde28d951913fa36c90780" args="(int query)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void ucommon::Socket::family </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>query</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set default socket family preference for query options when the socket type is otherwise not specified. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>query</em>&nbsp;</td><td>family to select. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a0f318413909567f0c4f1360b0c3661b1"></a><!-- doxytag: member="ucommon::Socket::getaddr" ref="a0f318413909567f0c4f1360b0c3661b1" args="(socket_t socket, struct sockaddr_storage *address, const char *hostname, const char *service)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static socklen_t ucommon::Socket::getaddr </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>hostname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>service</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Lookup a host name and service address based on the addressing family and socket type of a socket descriptor. </p>
<p>Store the result in a socket address structure. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>that is resolved. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>hostname</em>&nbsp;</td><td>to resolve. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>service</em>&nbsp;</td><td>port. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>socket address size. </dd></dl>

</div>
</div>
<a class="anchor" id="a8e2fcccad28e38644ad2eedd87983e55"></a><!-- doxytag: member="ucommon::Socket::getaddress" ref="a8e2fcccad28e38644ad2eedd87983e55" args="(struct sockaddr *address, char *buffer, socklen_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static char* ucommon::Socket::getaddress </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the hostname of a socket address. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>to lookup. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>to save hostname in. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of hostname buffer. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>buffer if found or NULL if not. </dd></dl>

</div>
</div>
<a class="anchor" id="a7a157e88abb88a5aaf5853b324ba262d"></a><!-- doxytag: member="ucommon::Socket::getaddress" ref="a7a157e88abb88a5aaf5853b324ba262d" args="(const char *host, const char *service, int type=SOCK_STREAM, int protocol=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static struct addrinfo* ucommon::Socket::getaddress </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>host</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>service</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>type</em> = <code>SOCK_STREAM</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>protocol</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static, read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get an address list directly. </p>
<p>This is used internally by some derived socket types when generic address lists would be invalid. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>host</em>&nbsp;</td><td>name in the form address or "address:port" </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>service</em>&nbsp;</td><td>id or port to use if not specified in host string. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>of service to get. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>protocol</em>&nbsp;</td><td>of service to get. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a7c4c2b94e8c1496f38b60248153428a9"></a><!-- doxytag: member="ucommon::Socket::getError" ref="a7c4c2b94e8c1496f38b60248153428a9" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ucommon::Socket::getError </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get socket error code. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>socket error code. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l00752">752</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

</div>
</div>
<a class="anchor" id="a0fb6bb5f80627133e1ca023ce61bb4ce"></a><!-- doxytag: member="ucommon::Socket::getfamily" ref="a0fb6bb5f80627133e1ca023ce61bb4ce" args="(struct sockaddr_internet &amp;address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::getfamily </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="a00013.html">sockaddr_internet</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>address</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the address family of an internet socket address object. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>to examine. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>address family. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l01183">1183</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

</div>
</div>
<a class="anchor" id="aa3ffa90d3e4c9ee4b50873979f90827e"></a><!-- doxytag: member="ucommon::Socket::getfamily" ref="aa3ffa90d3e4c9ee4b50873979f90827e" args="(struct sockaddr_storage &amp;address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::getfamily </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr_storage &amp;&nbsp;</td>
          <td class="paramname"> <em>address</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the address family of a socket address object. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>to examine. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>address family. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l01175">1175</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

</div>
</div>
<a class="anchor" id="a9e569ace30246dbfaac5f504df5d2be5"></a><!-- doxytag: member="ucommon::Socket::getfamily" ref="a9e569ace30246dbfaac5f504df5d2be5" args="(socket_t socket)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::getfamily </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the address family of the socket descriptor. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>address family. </dd></dl>

</div>
</div>
<a class="anchor" id="a5dfcdecc5aaadf56a4f40f263a22d9b1"></a><!-- doxytag: member="ucommon::Socket::gethint" ref="a5dfcdecc5aaadf56a4f40f263a22d9b1" args="(socket_t socket, struct addrinfo *hint)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static struct addrinfo* ucommon::Socket::gethint </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct addrinfo *&nbsp;</td>
          <td class="paramname"> <em>hint</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static, read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create an address info lookup hint based on the family and type properties of a socket descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>hint</em>&nbsp;</td><td>buffer. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>hint buffer. </dd></dl>

</div>
</div>
<a class="anchor" id="a8d920485ee4aec88d579aaa9445a51e9"></a><!-- doxytag: member="ucommon::Socket::gethostname" ref="a8d920485ee4aec88d579aaa9445a51e9" args="(struct sockaddr *address, char *buffer, size_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static char* ucommon::Socket::gethostname </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Lookup and return the host name associated with a socket address. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>to lookup. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>to save hostname into. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of buffer to save hostname into. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>buffer or NULL if lookup fails. </dd></dl>

</div>
</div>
<a class="anchor" id="a851d67795c71e99fbd19a90ee78b13ab"></a><!-- doxytag: member="ucommon::Socket::getinterface" ref="a851d67795c71e99fbd19a90ee78b13ab" args="(struct sockaddr *address, struct sockaddr *destination)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::getinterface </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>destination</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the socket address of the interface needed to reach a destination address. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>of interface found. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>destination</em>&nbsp;</td><td>address. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on error. </dd></dl>

</div>
</div>
<a class="anchor" id="a88a1cc27fb26417712bbedf17aaa24c7"></a><!-- doxytag: member="ucommon::Socket::getlen" ref="a88a1cc27fb26417712bbedf17aaa24c7" args="(struct sockaddr *address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static socklen_t ucommon::Socket::getlen </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>address</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the size of a socket address. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>of socket. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>size to use for this socket address object. </dd></dl>

</div>
</div>
<a class="anchor" id="aea7026ee4efc47ce5d0477dcfe7c70b4"></a><!-- doxytag: member="ucommon::Socket::getlocal" ref="aea7026ee4efc47ce5d0477dcfe7c70b4" args="(socket_t socket, struct sockaddr_storage *address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::getlocal </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>address</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get local address to which the socket is bound. </p>
<p>This is defined here because we may re-define the backend linkage for the socks proxy in the future. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor to examine. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>storage for local address. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="a80824693cacc59d3081730b85815a9fb"></a><!-- doxytag: member="ucommon::Socket::getmask" ref="a80824693cacc59d3081730b85815a9fb" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a> ucommon::Socket::getmask </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get a mask from the heap. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>mask to use, all bits cleared. </dd></dl>

</div>
</div>
<a class="anchor" id="a6b65f392128da6dc2cd1075355dbb1e1"></a><!-- doxytag: member="ucommon::Socket::getPending" ref="a6b65f392128da6dc2cd1075355dbb1e1" args="(void) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned ucommon::Socket::getPending </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the number of bytes of data in the socket receive buffer. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>bytes pending. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l00705">705</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

</div>
</div>
<a class="anchor" id="a6e3b0c37706e7f5e2b850a500d79803b"></a><!-- doxytag: member="ucommon::Socket::getremote" ref="a6e3b0c37706e7f5e2b850a500d79803b" args="(socket_t socket, struct sockaddr_storage *address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::getremote </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>address</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get remote address to which the socket is connected. </p>
<p>This is defined here because we may re-define the backend linkage for the socks proxy in the future. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor to examine. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>storage for remote address. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="a59de404c9e07af625a787e1f7426add0"></a><!-- doxytag: member="ucommon::Socket::getservice" ref="a59de404c9e07af625a787e1f7426add0" args="(struct sockaddr *address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static short ucommon::Socket::getservice </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>address</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the service port of a socket. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>of socket to examine. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>service port number. </dd></dl>

</div>
</div>
<a class="anchor" id="a30310656626c23c9b42493a95129f984"></a><!-- doxytag: member="ucommon::Socket::gettype" ref="a30310656626c23c9b42493a95129f984" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ucommon::Socket::gettype </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the type of a socket. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>socket type. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l00815">815</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00140_a30310656626c23c9b42493a95129f984_cgraph.png" border="0" usemap="#a00140_a30310656626c23c9b42493a95129f984_cgraph_map" alt=""></div>
</div>
</p>

</div>
</div>
<a class="anchor" id="abdd213cdb039bb4cd793a3ec1eaf88de"></a><!-- doxytag: member="ucommon::Socket::gettype" ref="abdd213cdb039bb4cd793a3ec1eaf88de" args="(socket_t socket)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::gettype </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the type of a socket. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>socket type. </dd></dl>

</div>
</div>
<a class="anchor" id="a4faec96b1510a2e02cca84219fda57e1"></a><!-- doxytag: member="ucommon::Socket::inetservice" ref="a4faec96b1510a2e02cca84219fda57e1" args="(struct sockaddr_internet *address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static short ucommon::Socket::inetservice </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="a00013.html">sockaddr_internet</a> *&nbsp;</td>
          <td class="paramname"> <em>address</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the service port of an inet socket. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>of internet socket to examine. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>service port number. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l01505">1505</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

</div>
</div>
<a class="anchor" id="aaf6cefa30cd3777e6b8e45b8b9610e2e"></a><!-- doxytag: member="ucommon::Socket::init" ref="aaf6cefa30cd3777e6b8e45b8b9610e2e" args="(const char *program)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void ucommon::Socket::init </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>program</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Initialize with program name. </p>
<p>Used by socks, for example. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>program</em>&nbsp;</td><td>name. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a5879f2cfbdf0c64c1d14f29c6f1a2d85"></a><!-- doxytag: member="ucommon::Socket::isConnected" ref="a5879f2cfbdf0c64c1d14f29c6f1a2d85" args="(void) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ucommon::Socket::isConnected </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Test if socket is connected. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if connected. </dd></dl>

</div>
</div>
<a class="anchor" id="a5021ee2e8d1fb91f29768fd8266ae8c1"></a><!-- doxytag: member="ucommon::Socket::isNull" ref="a5021ee2e8d1fb91f29768fd8266ae8c1" args="(const char *string)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static bool ucommon::Socket::isNull </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>string</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Simple function to validate that a given IP address string is a "zero" address. </p>
<p>Such address strings are used for example in SIP to indicate "hold" by re-inviting peers to a null address. Supports IPV4 and IPV6 addresses. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>string</em>&nbsp;</td><td>address to check. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if zero/null address. </dd></dl>

</div>
</div>
<a class="anchor" id="aa0980a516b06fadd9d4b7f3bd734c8a1"></a><!-- doxytag: member="ucommon::Socket::isNumeric" ref="aa0980a516b06fadd9d4b7f3bd734c8a1" args="(const char *string)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static bool ucommon::Socket::isNumeric </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>string</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Simple function to validate that a given IP address string is a numeric address. </p>
<p>This can be used to verify an address is not a "host" name. Supports IPV4 and IPV6 address strings. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>string</em>&nbsp;</td><td>address to check. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if zero/null address. </dd></dl>

</div>
</div>
<a class="anchor" id="a2665bb71a78b555999a7719a0c353920"></a><!-- doxytag: member="ucommon::Socket::isPending" ref="a2665bb71a78b555999a7719a0c353920" args="(unsigned value) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ucommon::Socket::isPending </td>
          <td>(</td>
          <td class="paramtype">unsigned&nbsp;</td>
          <td class="paramname"> <em>value</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>See the number of bytes in the receive queue. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</td><td>to test for. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if at least that many bytes waiting in receive queue. </dd></dl>

</div>
</div>
<a class="anchor" id="a4ece461c1fc40f76f3f10b39eb057432"></a><!-- doxytag: member="ucommon::Socket::join" ref="a4ece461c1fc40f76f3f10b39eb057432" args="(socket_t socket, struct addrinfo *list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::join </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct addrinfo *&nbsp;</td>
          <td class="paramname"> <em>list</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Join socket descriptor to multicast group. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>of groups to join. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on error. </dd></dl>

</div>
</div>
<a class="anchor" id="a207fa5bb291ac59980fd8a7df0ba3cb3"></a><!-- doxytag: member="ucommon::Socket::join" ref="a207fa5bb291ac59980fd8a7df0ba3cb3" args="(struct addrinfo *list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ucommon::Socket::join </td>
          <td>(</td>
          <td class="paramtype">struct addrinfo *&nbsp;</td>
          <td class="paramname"> <em>list</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Join socket to multicast group. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>of groups to join. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on error. </dd></dl>

</div>
</div>
<a class="anchor" id="aff630dce105b70e9d43633eae333d030"></a><!-- doxytag: member="ucommon::Socket::keepalive" ref="aff630dce105b70e9d43633eae333d030" args="(socket_t socket, bool enable)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::keepalive </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>enable</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set socket for keepalive packets for socket descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>enable</em>&nbsp;</td><td>keep-alive if true. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 if success, -1 if error. </dd></dl>

</div>
</div>
<a class="anchor" id="a926f38308b4f3c722850de3e6f8e63fb"></a><!-- doxytag: member="ucommon::Socket::keepalive" ref="a926f38308b4f3c722850de3e6f8e63fb" args="(bool enable)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ucommon::Socket::keepalive </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>enable</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set socket for keepalive packets. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>enable</em>&nbsp;</td><td>keep-alive if true. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 if error. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l00721">721</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00140_a926f38308b4f3c722850de3e6f8e63fb_cgraph.png" border="0" usemap="#a00140_a926f38308b4f3c722850de3e6f8e63fb_cgraph_map" alt=""></div>
</div>
</p>

</div>
</div>
<a class="anchor" id="aef3b0b59fed0f288b094bc57d4f72ccb"></a><!-- doxytag: member="ucommon::Socket::keyhost" ref="aef3b0b59fed0f288b094bc57d4f72ccb" args="(struct sockaddr *address, unsigned size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static unsigned ucommon::Socket::keyhost </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convert a socket host address into a hash map index. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>to convert. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of map index. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>key index path. </dd></dl>

</div>
</div>
<a class="anchor" id="a7026d09bac8f5523c9e8c89b4fc4d7bb"></a><!-- doxytag: member="ucommon::Socket::keyindex" ref="a7026d09bac8f5523c9e8c89b4fc4d7bb" args="(struct sockaddr *address, unsigned size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static unsigned ucommon::Socket::keyindex </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Convert a socket address and service into a hash map index. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>to convert. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of map index. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>key index path. </dd></dl>

</div>
</div>
<a class="anchor" id="af9b09326ba4e5cf49df8994c531a89f1"></a><!-- doxytag: member="ucommon::Socket::listento" ref="af9b09326ba4e5cf49df8994c531a89f1" args="(socket_t socket, struct sockaddr *address, int backlog=5)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::listento </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>backlog</em> = <code>5</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Bind the socket descriptor to a known interface listen on service port. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor to bind. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>of interface to bind to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>backlog</em>&nbsp;</td><td>for service. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 if error. </dd></dl>

</div>
</div>
<a class="anchor" id="a30e0a5e795f6cc2f0dfc19aa9502a79b"></a><!-- doxytag: member="ucommon::Socket::loopback" ref="a30e0a5e795f6cc2f0dfc19aa9502a79b" args="(socket_t socket, bool enable)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::loopback </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>enable</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set loopback to read multicast packets socket descriptor broadcasts. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>enable</em>&nbsp;</td><td>true to loopback, false to ignore. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 if success, -1 if error. </dd></dl>

</div>
</div>
<a class="anchor" id="aa28f3e878b5f9669d68366f13b7b38f7"></a><!-- doxytag: member="ucommon::Socket::loopback" ref="aa28f3e878b5f9669d68366f13b7b38f7" args="(bool enable)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ucommon::Socket::loopback </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>enable</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set loopback to read multicast packets we broadcast. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>enable</em>&nbsp;</td><td>true to loopback, false to ignore. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 if error. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l00745">745</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00140_aa28f3e878b5f9669d68366f13b7b38f7_cgraph.png" border="0" usemap="#a00140_aa28f3e878b5f9669d68366f13b7b38f7_cgraph_map" alt=""></div>
</div>
</p>

</div>
</div>
<a class="anchor" id="ae23c66c7981d93c19f22f699d2ebf2e8"></a><!-- doxytag: member="ucommon::Socket::multicast" ref="ae23c66c7981d93c19f22f699d2ebf2e8" args="(socket_t socket, unsigned ttl=1)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::multicast </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&nbsp;</td>
          <td class="paramname"> <em>ttl</em> = <code>1</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set multicast mode and multicast broadcast range for socket descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ttl</em>&nbsp;</td><td>to set for multicast socket or 0 to disable multicast. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 if success, -1 if error. </dd></dl>

</div>
</div>
<a class="anchor" id="a796be21401708e57c87e4b9a5324e147"></a><!-- doxytag: member="ucommon::Socket::multicast" ref="a796be21401708e57c87e4b9a5324e147" args="(unsigned ttl=1)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ucommon::Socket::multicast </td>
          <td>(</td>
          <td class="paramtype">unsigned&nbsp;</td>
          <td class="paramname"> <em>ttl</em> = <code>1</code></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set multicast mode and multicast broadcast range. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ttl</em>&nbsp;</td><td>to set for multicast socket or 0 to disable multicast. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 if error. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l00737">737</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00140_a796be21401708e57c87e4b9a5324e147_cgraph.png" border="0" usemap="#a00140_a796be21401708e57c87e4b9a5324e147_cgraph_map" alt=""></div>
</div>
</p>

</div>
</div>
<a class="anchor" id="a33212a27e1d0777dab86c17c96e52f2d"></a><!-- doxytag: member="ucommon::Socket::nodelay" ref="a33212a27e1d0777dab86c17c96e52f2d" args="(socket_t socket)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::nodelay </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set tcp nodelay option on socket descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 if success, -1 if error. </dd></dl>

</div>
</div>
<a class="anchor" id="aa76ff5e3a618cb181538b95fd95a7c9f"></a><!-- doxytag: member="ucommon::Socket::nodelay" ref="aa76ff5e3a618cb181538b95fd95a7c9f" args="(void) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ucommon::Socket::nodelay </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set nodelay option for tcp socket. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 if successful, -1 on error. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l00681">681</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00140_aa76ff5e3a618cb181538b95fd95a7c9f_cgraph.png" border="0" usemap="#a00140_aa76ff5e3a618cb181538b95fd95a7c9f_cgraph_map" alt=""></div>
</div>
</p>

</div>
</div>
<a class="anchor" id="aaec3f9547dcf7c891e126460ed894406"></a><!-- doxytag: member="ucommon::Socket::operator bool" ref="aaec3f9547dcf7c891e126460ed894406" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ucommon::Socket::operator bool </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Test if socket is valid. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if valid socket. </dd></dl>

</div>
</div>
<a class="anchor" id="a052529d07ea8d602b84f6dc6e13059cf"></a><!-- doxytag: member="ucommon::Socket::operator socket_t" ref="a052529d07ea8d602b84f6dc6e13059cf" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ucommon::Socket::operator socket_t </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the socket descriptor by casting. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>socket descriptor of object. </dd></dl>

<p>Reimplemented in <a class="el" href="a00068.html#a8d495f0942321a4ce5aec10af0c9771a">ucommon::ListenSocket</a>.</p>

<p>Definition at line <a class="el" href="a00198_source.html#l01011">1011</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

</div>
</div>
<a class="anchor" id="ad5f214c1801bb80a87709c0a832c98f6"></a><!-- doxytag: member="ucommon::Socket::operator!" ref="ad5f214c1801bb80a87709c0a832c98f6" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ucommon::Socket::operator! </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Test if socket is invalid. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if socket is invalid. </dd></dl>

</div>
</div>
<a class="anchor" id="a14c3ced56f4e1f47f810894fa05d904d"></a><!-- doxytag: member="ucommon::Socket::operator*" ref="a14c3ced56f4e1f47f810894fa05d904d" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">socket_t ucommon::Socket::operator* </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the socket descriptor by pointer reference. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>socket descriptor of object. </dd></dl>

<p>Reimplemented in <a class="el" href="a00068.html#ac96f1f17d672c69b1a69b9d235128077">ucommon::ListenSocket</a>.</p>

<p>Definition at line <a class="el" href="a00198_source.html#l01018">1018</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

</div>
</div>
<a class="anchor" id="a504de0200707666b7366021e57ee1ca5"></a><!-- doxytag: member="ucommon::Socket::operator=" ref="a504de0200707666b7366021e57ee1ca5" args="(socket_t socket)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00140.html">Socket</a>&amp; ucommon::Socket::operator= </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Assign socket from a socket descriptor. </p>
<p>Release existing socket if one present. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor to assign to object. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a86c2d08060a9246b31ddec7001aa0e27"></a><!-- doxytag: member="ucommon::Socket::peek" ref="a86c2d08060a9246b31ddec7001aa0e27" args="(void *data, size_t number) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ucommon::Socket::peek </td>
          <td>(</td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>number</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Peek at data waiting in the socket receive buffer. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>pointer to save data in. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>number</em>&nbsp;</td><td>of bytes to peek. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes actually read, or 0 if no data waiting. </dd></dl>

</div>
</div>
<a class="anchor" id="aa5c32c89765fa27a0dec6f4e48697ed8"></a><!-- doxytag: member="ucommon::Socket::pending" ref="aa5c32c89765fa27a0dec6f4e48697ed8" args="(socket_t socket)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static unsigned ucommon::Socket::pending </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the number of bytes pending in the receive buffer of a socket descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of pending bytes. </dd></dl>

</div>
</div>
<a class="anchor" id="a7f6966bb8d3484cae26b2aa8b5db3eda"></a><!-- doxytag: member="ucommon::Socket::printf" ref="a7f6966bb8d3484cae26b2aa8b5db3eda" args="(socket_t socket, const char *format,...)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static ssize_t ucommon::Socket::printf </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>format</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&nbsp;</td>
          <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Print formatted string to socket. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>to write to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>format</em>&nbsp;</td><td>string. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes sent, -1 if error. </dd></dl>

</div>
</div>
<a class="anchor" id="af1e8250e6e79f5790d9e5aa8eff65893"></a><!-- doxytag: member="ucommon::Socket::printf" ref="af1e8250e6e79f5790d9e5aa8eff65893" args="(const char *format,...)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ucommon::Socket::printf </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>format</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&nbsp;</td>
          <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Print formatted string to socket. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>format</em>&nbsp;</td><td>string. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes sent. </dd></dl>

</div>
</div>
<a class="anchor" id="a51c3939cf04777b524afbea514ecebb2"></a><!-- doxytag: member="ucommon::Socket::priority" ref="a51c3939cf04777b524afbea514ecebb2" args="(socket_t socket, int scheduling)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::priority </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>scheduling</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set packet priority of socket descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>scheduling</em>&nbsp;</td><td>priority for packet scheduling. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on error. </dd></dl>

</div>
</div>
<a class="anchor" id="ad435aaa7584b533f91016df05541c554"></a><!-- doxytag: member="ucommon::Socket::priority" ref="ad435aaa7584b533f91016df05541c554" args="(int scheduling)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ucommon::Socket::priority </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>scheduling</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set packet priority, 0 to 6 unless privileged. </p>
<p>Should be set before type-of-service. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>scheduling</em>&nbsp;</td><td>priority for packet scheduling. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on error. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l00851">851</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00140_ad435aaa7584b533f91016df05541c554_cgraph.png" border="0" usemap="#a00140_ad435aaa7584b533f91016df05541c554_cgraph_map" alt=""></div>
</div>
</p>

</div>
</div>
<a class="anchor" id="affa6687c4f13fb3d3ac43d87f2c4facd"></a><!-- doxytag: member="ucommon::Socket::readfrom" ref="affa6687c4f13fb3d3ac43d87f2c4facd" args="(Socket &amp;socket, char *buffer, size_t size, struct sockaddr_storage *address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static size_t ucommon::Socket::readfrom </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00140.html">Socket</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>address</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>receive from socket object. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>object to recv from. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>to recv. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of buffer to recv. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>receiving from or NULL if connected. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes received, -1 if error. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l01339">1339</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00140_affa6687c4f13fb3d3ac43d87f2c4facd_cgraph.png" border="0" usemap="#a00140_affa6687c4f13fb3d3ac43d87f2c4facd_cgraph_map" alt=""></div>
<map name="a00140_affa6687c4f13fb3d3ac43d87f2c4facd_cgraph_map" id="a00140_affa6687c4f13fb3d3ac43d87f2c4facd_cgraph">
<area shape="rect" id="node3" href="a00140.html#aa4506e5b9179f45b484f2e8e134f20a3" title="Read data from the socket receive buffer." alt="" coords="325,5,597,32"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="aa4506e5b9179f45b484f2e8e134f20a3"></a><!-- doxytag: member="ucommon::Socket::readfrom" ref="aa4506e5b9179f45b484f2e8e134f20a3" args="(void *data, size_t number, struct sockaddr_storage *address=NULL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ucommon::Socket::readfrom </td>
          <td>(</td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>number</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>address</em> = <code>NULL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read data from the socket receive buffer. </p>
<p>This will be used in abi 4. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>pointer to save data in. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>number</em>&nbsp;</td><td>of bytes to read. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>of peer data was received from. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes actually read, 0 if none, -1 if error. </dd></dl>

</div>
</div>
<a class="anchor" id="a1312d7fe4d5608dba238d020c69ae901"></a><!-- doxytag: member="ucommon::Socket::readline" ref="a1312d7fe4d5608dba238d020c69ae901" args="(socket_t socket, char *data, size_t size, timeout_t timeout=Timer::inf)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static ssize_t ucommon::Socket::readline </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00194.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a>&nbsp;</td>
          <td class="paramname"> <em>timeout</em> = <code><a class="el" href="a00162.html#ad3d270c59686a8af48b731d389c65b1c">Timer::inf</a></code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read a newline of text data from the socket and save in NULL terminated string. </p>
<p>This uses an optimized I/O method that takes advantage of socket peeking. As such, it has to be rewritten to be used in a ssl layer socket. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>to read from. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>to save input line. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of input line buffer. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>to wait for a complete input line. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes read, 0 if none, -1 if error. </dd></dl>

</div>
</div>
<a class="anchor" id="a32d37dde9b1809500f7049e1421707fd"></a><!-- doxytag: member="ucommon::Socket::readline" ref="a32d37dde9b1809500f7049e1421707fd" args="(string &amp;buffer)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ucommon::Socket::readline </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00148.html">string</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>buffer</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read a string of input from the socket and strip trailing newline. </p>
<p>This uses an optimized I/O method that takes advantage of socket peeking. This presumes a connected socket on a streamble protocol. Because the trailing newline is dropped, the return size may be greater than the string length. If there was no data read because of eof of data, an error has occured, or timeout without input, then 0 will be returned. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>to save input line. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes read, 0 if none, <a class="el" href="a00140.html#a13572bd97949faec1c0c18808f29fdd6" title="Get error code.">err()</a> has error. </dd></dl>

</div>
</div>
<a class="anchor" id="a0d42fc2dc8f4060c586694957177db8a"></a><!-- doxytag: member="ucommon::Socket::readline" ref="a0d42fc2dc8f4060c586694957177db8a" args="(char *data, size_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ucommon::Socket::readline </td>
          <td>(</td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read a newline of text data from the socket and save in NULL terminated string. </p>
<p>This uses an optimized I/O method that takes advantage of socket peeking. This presumes a connected socket on a streamble protocol. Because the trailing newline is dropped, the return size may be greater than the string length. If there was no data read because of eof of data, an error has occured, or timeout without input, then 0 will be returned. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>to save input line. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of input line buffer. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes read, 0 if none, <a class="el" href="a00140.html#a13572bd97949faec1c0c18808f29fdd6" title="Get error code.">err()</a> has error. </dd></dl>

</div>
</div>
<a class="anchor" id="a2d36973ad322dfc3457e7916f388ed43"></a><!-- doxytag: member="ucommon::Socket::recvfrom" ref="a2d36973ad322dfc3457e7916f388ed43" args="(socket_t socket, void *buffer, size_t size, int flags=0, struct sockaddr_storage *address=NULL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static ssize_t ucommon::Socket::recvfrom </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>flags</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>address</em> = <code>NULL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get data waiting in receive queue. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>to get from. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>to save. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of data buffer to request. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>for i/o operation (MSG_OOB, MSG_PEEK, etc). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>of source. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes received, -1 if error. </dd></dl>

</div>
</div>
<a class="anchor" id="acc76e61bd316298dcfa4707346e0c573"></a><!-- doxytag: member="ucommon::Socket::recvinet" ref="acc76e61bd316298dcfa4707346e0c573" args="(socket_t socket, void *buffer, size_t size, int flags=0, struct sockaddr_internet *address=NULL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static ssize_t ucommon::Socket::recvinet </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>flags</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="a00013.html">sockaddr_internet</a> *&nbsp;</td>
          <td class="paramname"> <em>address</em> = <code>NULL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get internet data waiting in receive queue. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>to get from. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>to save. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of data buffer to request. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>for i/o operation (MSG_OOB, MSG_PEEK, etc). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>of source. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes received, -1 if error. </dd></dl>

</div>
</div>
<a class="anchor" id="a03e3d43bb0e1a49f76f15dd7291148f2"></a><!-- doxytag: member="ucommon::Socket::recvsize" ref="a03e3d43bb0e1a49f76f15dd7291148f2" args="(socket_t socket, unsigned size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::recvsize </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the receive size of a socket descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of receive buffer to set. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on error. </dd></dl>

</div>
</div>
<a class="anchor" id="a0d61ce8a80c6cdf164f44e97d19b2e2a"></a><!-- doxytag: member="ucommon::Socket::recvsize" ref="a0d61ce8a80c6cdf164f44e97d19b2e2a" args="(unsigned size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ucommon::Socket::recvsize </td>
          <td>(</td>
          <td class="paramtype">unsigned&nbsp;</td>
          <td class="paramname"> <em>size</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the size of the socket receive buffer. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of recv buffer to set. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on error. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l00785">785</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00140_a0d61ce8a80c6cdf164f44e97d19b2e2a_cgraph.png" border="0" usemap="#a00140_a0d61ce8a80c6cdf164f44e97d19b2e2a_cgraph_map" alt=""></div>
</div>
</p>

</div>
</div>
<a class="anchor" id="a21deec70059006fa40050edb1f34e011"></a><!-- doxytag: member="ucommon::Socket::release" ref="a21deec70059006fa40050edb1f34e011" args="(set_t mask)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void ucommon::Socket::release </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a>&nbsp;</td>
          <td class="paramname"> <em>mask</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Release a heap allocated mask. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>mask</em>&nbsp;</td><td>to release. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a1cb51365fc2f35eabd730add7d1e45a3"></a><!-- doxytag: member="ucommon::Socket::release" ref="a1cb51365fc2f35eabd730add7d1e45a3" args="(socket_t socket)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void ucommon::Socket::release </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Release (close) a socket. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>to close. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="abe6dfe4ddbaeb0d8fc7b6ca037d0b13b"></a><!-- doxytag: member="ucommon::Socket::release" ref="abe6dfe4ddbaeb0d8fc7b6ca037d0b13b" args="(struct addrinfo *list)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void ucommon::Socket::release </td>
          <td>(</td>
          <td class="paramtype">struct addrinfo *&nbsp;</td>
          <td class="paramname"> <em>list</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Release an address list directly. </p>
<p>This is used internally by some derived socket types which do not use generic address lists. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</td><td>of addresses. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ab7c7951de1b1851679e59e840782daab"></a><!-- doxytag: member="ucommon::Socket::replyto" ref="ab7c7951de1b1851679e59e840782daab" args="(socket_t socket, const void *buffer, size_t size, int flags, struct sockaddr_storage *address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static ssize_t ucommon::Socket::replyto </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>address</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Send reply on socket. </p>
<p>Used to reply to a recvfrom message. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>to send to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>to send. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of data buffer to send. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>for i/o operation (MSG_OOB, MSG_PEEK, etc). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>to reply to. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes sent, -1 if error. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l01217">1217</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

</div>
</div>
<a class="anchor" id="a5864add5a29537aa1768f075b784b4d1"></a><!-- doxytag: member="ucommon::Socket::segsize" ref="a5864add5a29537aa1768f075b784b4d1" args="(unsigned size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned ucommon::Socket::segsize </td>
          <td>(</td>
          <td class="paramtype">unsigned&nbsp;</td>
          <td class="paramname"> <em>size</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set segment size and get mtu of a socket. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of segment or 0 to leave unchanged. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>mtu size. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l00823">823</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00140_a5864add5a29537aa1768f075b784b4d1_cgraph.png" border="0" usemap="#a00140_a5864add5a29537aa1768f075b784b4d1_cgraph_map" alt=""></div>
</div>
</p>

</div>
</div>
<a class="anchor" id="ae530e816a635756925458c37a80602c3"></a><!-- doxytag: member="ucommon::Socket::segsize" ref="ae530e816a635756925458c37a80602c3" args="(socket_t socket, unsigned size=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static unsigned ucommon::Socket::segsize </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&nbsp;</td>
          <td class="paramname"> <em>size</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set segment size and get MTU. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>to modify. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of segment or zero to not set. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>mtu size of socket. </dd></dl>

</div>
</div>
<a class="anchor" id="a8ed59ec0304e02e65ee35a09ca78a746"></a><!-- doxytag: member="ucommon::Socket::select" ref="a8ed59ec0304e02e65ee35a09ca78a746" args="(int max, set_t read, set_t write, set_t error, timeout_t timeout)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::select </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a>&nbsp;</td>
          <td class="paramname"> <em>read</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a>&nbsp;</td>
          <td class="paramname"> <em>write</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a>&nbsp;</td>
          <td class="paramname"> <em>error</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00194.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a>&nbsp;</td>
          <td class="paramname"> <em>timeout</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Select with timeout. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>max</em>&nbsp;</td><td>socket id + 1. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>read</em>&nbsp;</td><td>mask of socket id's. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>write</em>&nbsp;</td><td>mask of socket id's. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>error</em>&nbsp;</td><td>mask of socket id's. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>in milliseconds to wait for select activity. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a32bde415a1606ffa5bfb924da005791e"></a><!-- doxytag: member="ucommon::Socket::select" ref="a32bde415a1606ffa5bfb924da005791e" args="(int max, set_t read, set_t write, set_t error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::select </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>max</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a>&nbsp;</td>
          <td class="paramname"> <em>read</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a>&nbsp;</td>
          <td class="paramname"> <em>write</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a>&nbsp;</td>
          <td class="paramname"> <em>error</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Select without timeout. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>max</em>&nbsp;</td><td>socket id + 1. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>read</em>&nbsp;</td><td>mask of socket id's. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>write</em>&nbsp;</td><td>mask of socket id's. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>error</em>&nbsp;</td><td>mask of socket id's. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="acce8ff3b9bc97dab0c68260571d87954"></a><!-- doxytag: member="ucommon::Socket::sendinet" ref="acce8ff3b9bc97dab0c68260571d87954" args="(socket_t socket, const void *buffer, size_t size, int flags, struct sockaddr_internet *address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static ssize_t ucommon::Socket::sendinet </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="a00013.html">sockaddr_internet</a> *&nbsp;</td>
          <td class="paramname"> <em>address</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Send to internet socket. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>to send to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>to send. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of data buffer to send. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>for i/o operation (MSG_OOB, MSG_PEEK, etc). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>to send to. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes sent, -1 if error. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l01229">1229</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

</div>
</div>
<a class="anchor" id="ab8eb922560c2c3be760dfe1fb13acea1"></a><!-- doxytag: member="ucommon::Socket::sendsize" ref="ab8eb922560c2c3be760dfe1fb13acea1" args="(socket_t socket, unsigned size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::sendsize </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the send size of a socket descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of send buffer to set. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on error. </dd></dl>

</div>
</div>
<a class="anchor" id="a533b863372a3efe014573e94c0532a43"></a><!-- doxytag: member="ucommon::Socket::sendsize" ref="a533b863372a3efe014573e94c0532a43" args="(unsigned size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ucommon::Socket::sendsize </td>
          <td>(</td>
          <td class="paramtype">unsigned&nbsp;</td>
          <td class="paramname"> <em>size</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the size of the socket send buffer. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of send buffer to set. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on error. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l00768">768</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00140_a533b863372a3efe014573e94c0532a43_cgraph.png" border="0" usemap="#a00140_a533b863372a3efe014573e94c0532a43_cgraph_map" alt=""></div>
</div>
</p>

</div>
</div>
<a class="anchor" id="aac3cb1519e30eca1a5dc471e91e3a96b"></a><!-- doxytag: member="ucommon::Socket::sendto" ref="aac3cb1519e30eca1a5dc471e91e3a96b" args="(socket_t socket, const void *buffer, size_t size, int flags=0, struct sockaddr *address=NULL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static ssize_t ucommon::Socket::sendto </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>flags</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>address</em> = <code>NULL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Send data on socket. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>to send to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>to send. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of data buffer to send. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>for i/o operation (MSG_OOB, MSG_PEEK, etc). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>of destination, NULL if connected. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes sent, -1 if error. </dd></dl>

</div>
</div>
<a class="anchor" id="a9926fe133873448d73b4e4854c2bf7e3"></a><!-- doxytag: member="ucommon::Socket::sendwait" ref="a9926fe133873448d73b4e4854c2bf7e3" args="(socket_t socket, unsigned size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::sendwait </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned&nbsp;</td>
          <td class="paramname"> <em>size</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the size to wait before sending. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of send wait buffer to set. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on error. </dd></dl>

</div>
</div>
<a class="anchor" id="a59f2cfe60e83e3c4c067a277406041b6"></a><!-- doxytag: member="ucommon::Socket::sendwait" ref="a59f2cfe60e83e3c4c067a277406041b6" args="(unsigned size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ucommon::Socket::sendwait </td>
          <td>(</td>
          <td class="paramtype">unsigned&nbsp;</td>
          <td class="paramname"> <em>size</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the size to wait before sending. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of send wait buffer to set. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on error. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l00776">776</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00140_a59f2cfe60e83e3c4c067a277406041b6_cgraph.png" border="0" usemap="#a00140_a59f2cfe60e83e3c4c067a277406041b6_cgraph_map" alt=""></div>
</div>
</p>

</div>
</div>
<a class="anchor" id="a0d3bcb37023adf17c058a4b77d0d1ba4"></a><!-- doxytag: member="ucommon::Socket::set" ref="a0d3bcb37023adf17c058a4b77d0d1ba4" args="(socket_t socket, set_t mask)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void ucommon::Socket::set </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a>&nbsp;</td>
          <td class="paramname"> <em>mask</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set a socket entry in a mask. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>entry to set. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mask</em>&nbsp;</td><td>to set entry in. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aff663e54e71e359a915bda03eef041bb"></a><!-- doxytag: member="ucommon::Socket::setccid" ref="aff663e54e71e359a915bda03eef041bb" args="(uint8_t ccid)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ucommon::Socket::setccid </td>
          <td>(</td>
          <td class="paramtype">uint8_t&nbsp;</td>
          <td class="paramname"> <em>ccid</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set ccid of dccp socket. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>ccid</em>&nbsp;</td><td>to set. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if success, false if not dccp or not supported ccid used. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l00831">831</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00140_aff663e54e71e359a915bda03eef041bb_cgraph.png" border="0" usemap="#a00140_aff663e54e71e359a915bda03eef041bb_cgraph_map" alt=""></div>
</div>
</p>

</div>
</div>
<a class="anchor" id="ae91e4b496c71b3c0ad8dc23d2962d6dd"></a><!-- doxytag: member="ucommon::Socket::setccid" ref="ae91e4b496c71b3c0ad8dc23d2962d6dd" args="(socket_t socket, uint8_t ccid)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static bool ucommon::Socket::setccid </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&nbsp;</td>
          <td class="paramname"> <em>ccid</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set congestion control id. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>to modify. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ccid</em>&nbsp;</td><td>value to set. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if success, false if not dccp or not supported ccid used. </dd></dl>

</div>
</div>
<a class="anchor" id="aa7e4687726d4e7efad80565d86dc672f"></a><!-- doxytag: member="ucommon::Socket::store" ref="aa7e4687726d4e7efad80565d86dc672f" args="(struct sockaddr_internet *storage, struct sockaddr *address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static unsigned ucommon::Socket::store </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="a00013.html">sockaddr_internet</a> *&nbsp;</td>
          <td class="paramname"> <em>storage</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>address</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Store an address into an internet address object. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>storage</em>&nbsp;</td><td>for address. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>to store. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes stored. </dd></dl>

</div>
</div>
<a class="anchor" id="aab407b6618ba23ee474927d5d063f806"></a><!-- doxytag: member="ucommon::Socket::store" ref="aab407b6618ba23ee474927d5d063f806" args="(struct sockaddr_storage *storage, struct sockaddr *address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static unsigned ucommon::Socket::store </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>storage</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>address</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Store an address into an address object. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>storage</em>&nbsp;</td><td>for address. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>to store. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes stored. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l01426">1426</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00140_aab407b6618ba23ee474927d5d063f806_cgraph.png" border="0" usemap="#a00140_aab407b6618ba23ee474927d5d063f806_cgraph_map" alt=""></div>
<map name="a00140_aab407b6618ba23ee474927d5d063f806_cgraph_map" id="a00140_aab407b6618ba23ee474927d5d063f806_cgraph">
<area shape="rect" id="node3" href="a00208.html#aa948d5926268ce79c22778bd81cc6ed9" title="Convenience function to access object copy." alt="" coords="296,5,448,32"/><area shape="rect" id="node5" href="a00095.html#a4a4a4a1e33744f72e9da89576678f78c" title="Retain (increase retention of) object when copying." alt="" coords="496,5,808,32"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="ab31a21fdb819b9ecdf0181222455dc2e"></a><!-- doxytag: member="ucommon::Socket::subnet" ref="ab31a21fdb819b9ecdf0181222455dc2e" args="(struct sockaddr *address1, struct sockaddr *address2)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static bool ucommon::Socket::subnet </td>
          <td>(</td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>address1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>address2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>See if both addresses are in the same subnet. </p>
<p>This is only relevant to IPV4 and class domain routing. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>address1</em>&nbsp;</td><td>to test. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address2</em>&nbsp;</td><td>to test. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if in same subnet. </dd></dl>

</div>
</div>
<a class="anchor" id="ab1efdbbf27c9a76533231eb817a954fb"></a><!-- doxytag: member="ucommon::Socket::test" ref="ab1efdbbf27c9a76533231eb817a954fb" args="(socket_t socket, set_t mask)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static bool ucommon::Socket::test </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00140.html#a6462ee1ecac78717d60763defea25166">set_t</a>&nbsp;</td>
          <td class="paramname"> <em>mask</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Test a socket entry in a mask. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>entry to test. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mask</em>&nbsp;</td><td>to set entry in. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if entry set. </dd></dl>

</div>
</div>
<a class="anchor" id="a4a1ec1ace475599f0190e2c65d315f04"></a><!-- doxytag: member="ucommon::Socket::tos" ref="a4a1ec1ace475599f0190e2c65d315f04" args="(socket_t socket, int type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::tos </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>type</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set type of service of socket descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>of service. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on error. </dd></dl>

</div>
</div>
<a class="anchor" id="a538dbeb31ee7f88a788aedbeb79aed5e"></a><!-- doxytag: member="ucommon::Socket::tos" ref="a538dbeb31ee7f88a788aedbeb79aed5e" args="(int type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ucommon::Socket::tos </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>type</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the type of service field of outgoing packets. </p>
<p>Some useful values include IPTOS_LOWDELAY to minimize delay for interactive traffic, IPTOS_THROUGHPUT to optimize throughput, OPTOS_RELIABILITY to optimize for reliability, and IPTOS_MINCOST for low speed use. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>of service value. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success or -1 on error. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l00842">842</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00140_a538dbeb31ee7f88a788aedbeb79aed5e_cgraph.png" border="0" usemap="#a00140_a538dbeb31ee7f88a788aedbeb79aed5e_cgraph_map" alt=""></div>
</div>
</p>

</div>
</div>
<a class="anchor" id="aa153e9eb7065195652c307d2c6db7cff"></a><!-- doxytag: member="ucommon::Socket::ttl" ref="aa153e9eb7065195652c307d2c6db7cff" args="(socket_t socket, unsigned char time)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int ucommon::Socket::ttl </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned char&nbsp;</td>
          <td class="paramname"> <em>time</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the time to live for the socket descriptor. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>time</em>&nbsp;</td><td>to live to set. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on error. </dd></dl>

</div>
</div>
<a class="anchor" id="a0900cd6d7a82cf1608791fbafea679c0"></a><!-- doxytag: member="ucommon::Socket::ttl" ref="a0900cd6d7a82cf1608791fbafea679c0" args="(unsigned char time)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ucommon::Socket::ttl </td>
          <td>(</td>
          <td class="paramtype">unsigned char&nbsp;</td>
          <td class="paramname"> <em>time</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the time to live before packets expire. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>time</em>&nbsp;</td><td>to live to set. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on error. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l00760">760</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00140_a0900cd6d7a82cf1608791fbafea679c0_cgraph.png" border="0" usemap="#a00140_a0900cd6d7a82cf1608791fbafea679c0_cgraph_map" alt=""></div>
</div>
</p>

</div>
</div>
<a class="anchor" id="a377280450c5030031fae24988939d9eb"></a><!-- doxytag: member="ucommon::Socket::v4mapping" ref="a377280450c5030031fae24988939d9eb" args="(bool enable)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void ucommon::Socket::v4mapping </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>enable</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the default socket behavior for v6-v4 mapping. </p>
<p>This also effects v6 address lookup as to whether v4 remapped addresses can be used if no v6 address is found. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>enable</em>&nbsp;</td><td>true to set mapping. This is default. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a6db0fec4b888b2bd94bf3ba8c51d9227"></a><!-- doxytag: member="ucommon::Socket::wait" ref="a6db0fec4b888b2bd94bf3ba8c51d9227" args="(timeout_t timeout=Timer::inf)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ucommon::Socket::wait </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00194.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a>&nbsp;</td>
          <td class="paramname"> <em>timeout</em> = <code><a class="el" href="a00162.html#ad3d270c59686a8af48b731d389c65b1c">Timer::inf</a></code></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p><a class="el" href="a00140.html" title="A generic socket base class.">Socket</a> i/o timer setting. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>to wait, inf for blocking, 0 pure non-blocking. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success or error code. </dd></dl>

</div>
</div>
<a class="anchor" id="a2c6fde5426967bbcb4406c8864f17760"></a><!-- doxytag: member="ucommon::Socket::wait" ref="a2c6fde5426967bbcb4406c8864f17760" args="(socket_t socket, timeout_t timeout=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static bool ucommon::Socket::wait </td>
          <td>(</td>
          <td class="paramtype">socket_t&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00194.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a>&nbsp;</td>
          <td class="paramname"> <em>timeout</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Test for pending input data. </p>
<p>This function can wait up to a specified timeout for data to appear. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>to test. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>or 0 if none. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if input data waiting. </dd></dl>

</div>
</div>
<a class="anchor" id="ad53a0e81f816074be548ffe14ef0dd5a"></a><!-- doxytag: member="ucommon::Socket::waitPending" ref="ad53a0e81f816074be548ffe14ef0dd5a" args="(timeout_t timeout=0) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ucommon::Socket::waitPending </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00194.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a>&nbsp;</td>
          <td class="paramname"> <em>timeout</em> = <code>0</code></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Test for pending input data. </p>
<p>This function can wait up to a specified timeout for data to appear. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>or 0 if none. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if input data waiting. </dd></dl>

</div>
</div>
<a class="anchor" id="a325220475152c80e08bdbddfaee2dd9c"></a><!-- doxytag: member="ucommon::Socket::waitSending" ref="a325220475152c80e08bdbddfaee2dd9c" args="(timeout_t timeout=0) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ucommon::Socket::waitSending </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00194.html#af412159e5cef839836a5e7b19ee75d1c">timeout_t</a>&nbsp;</td>
          <td class="paramname"> <em>timeout</em> = <code>0</code></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Test for output data sent. </p>
<p>This function can wait up to a specified timeout for data to appear sent. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>timeout</em>&nbsp;</td><td>or 0 if none. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>false if cannot send more output/out of buffer space. </dd></dl>

</div>
</div>
<a class="anchor" id="a82c4b1cbbe3039b2c01a8e8d57962305"></a><!-- doxytag: member="ucommon::Socket::writes" ref="a82c4b1cbbe3039b2c01a8e8d57962305" args="(const char *string)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ucommon::Socket::writes </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>string</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Write a null terminated string to the socket. </p>
<p>This exists because we messed up consistency with the original puts() method. In the future there will be a single puts() that has a NULL default. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>string</em>&nbsp;</td><td>to write. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes sent, 0 if none, -1 if error. </dd></dl>

</div>
</div>
<a class="anchor" id="a6b076da48b05265e5bf70f3dd92ac42a"></a><!-- doxytag: member="ucommon::Socket::writeto" ref="a6b076da48b05265e5bf70f3dd92ac42a" args="(Socket &amp;socket, const char *buffer, size_t size, struct sockaddr *address)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static size_t ucommon::Socket::writeto </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00140.html">Socket</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>socket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>address</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [inline, static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Send to socket object. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>socket</em>&nbsp;</td><td>object to send thru. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>to send. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of buffer to send. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>to send to or NULL if connected. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes send, -1 if error. </dd></dl>

<p>Definition at line <a class="el" href="a00198_source.html#l01328">1328</a> of file <a class="el" href="a00198_source.html">socket.h</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dynsection">
<div class="center"><img src="a00140_a6b076da48b05265e5bf70f3dd92ac42a_cgraph.png" border="0" usemap="#a00140_a6b076da48b05265e5bf70f3dd92ac42a_cgraph_map" alt=""></div>
<map name="a00140_a6b076da48b05265e5bf70f3dd92ac42a_cgraph_map" id="a00140_a6b076da48b05265e5bf70f3dd92ac42a_cgraph">
<area shape="rect" id="node3" href="a00140.html#a2f2ef63b14839b0c57b3a8b051b431d7" title="Write data to the socket send buffer." alt="" coords="319,5,580,32"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a2f2ef63b14839b0c57b3a8b051b431d7"></a><!-- doxytag: member="ucommon::Socket::writeto" ref="a2f2ef63b14839b0c57b3a8b051b431d7" args="(const void *data, size_t number, struct sockaddr *address=NULL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t ucommon::Socket::writeto </td>
          <td>(</td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>number</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr *&nbsp;</td>
          <td class="paramname"> <em>address</em> = <code>NULL</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Write data to the socket send buffer. </p>
<p>This will be used in abi 4. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>pointer to write data from. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>number</em>&nbsp;</td><td>of bytes to write. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>address</em>&nbsp;</td><td>of peer to send data to if not connected. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>number of bytes actually sent, 0 if none, -1 if error. </dd></dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>ucommon/<a class="el" href="a00198_source.html">socket.h</a></li>
</ul>
</div>
<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jul 14 16:40:03 2011 for ucommon by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>