ptypes

ptypes Mercurial Source Tree


Root/doc/inet.ipstmserver.html

<html><!-- #BeginTemplate "/Templates/tmpl.dwt" --><!-- DW6 -->
<head>
<!-- #BeginEditable "doctitle" --> 
<title>PTypes: networking: ipstmserver</title>
<!-- #EndEditable --> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="styles.css">
</head>
<body bgcolor="#FFFFFF" leftmargin="40" marginwidth="40">
<p><a href="../index.html"><img src="title-21.png" width="253" height="39" alt="C++ Portable Types Library (PTypes) Version 2.1" border="0"></a> 
<hr size="1" noshade>
<!-- #BeginEditable "body" --> 
<p class="hpath"><a href="index.html">Top</a>: <a href="inet.html">Networking</a>: 
ipstmserver</p>
<blockquote> 
<pre class="lang">#include <pinet.h>

class ipstmserver {
    ipstmserver();

    int bind(ipaddress ip, int port);
    int bindall(int port);

    bool poll(int bindnum = -1, int timeout = 0);
    bool serve(ipstream& client, int bindnum = -1, int timeout = -1);

    virtual void sockopt(int socket);
}</pre>
</blockquote>
<p>The <span class="lang">ipstmserver</span> class is used on the server side 
of a stream-oriented client-server application. It bounds itself to a specified 
port/address and waits until a connection request is received from a client host. 
For each connection request a server application performs some actions and returns 
to the waiting state. For better performance your daemon may start a new thread 
for each client connection.</p>
<p><span class="lang">Ipstmserver</span> can generate exceptions of type <span class="lang">(estream*)</span> 
with a corresponding error code and a message string.</p>
<p><span class="def">ipstmserver::ipstmserver()</span> constructs an <span class="lang">ipstmserver</span> 
object.</p>
<p><span class="def">int ipstmserver::bind(ipaddress ip, int port)</span> binds 
the server to the specified local IP address and port number. This function can 
be called multiple times for different local addresses and port numbers. <span class="lang">Bind()</span> 
returns a value that can be used later in call to <span class="lang">poll()</span> 
and <span class="lang">serve()</span> as the parameter <span class="lang">bindnum</span>.</p>
<p><span class="def">int ipstmserver::bindall(int port)</span> binds the server 
to all local IP addresses on the specified port number. Can be called multiple 
times for different port numbers. <span class="lang">Bindall()</span> returns 
a value that can be used later in call to <span class="lang">poll()</span> and 
<span class="lang">serve()</span> as the parameter <span class="lang">bindnum</span>.</p>
<p><span class="def">bool ipstmserver::poll(int bindnum = -1, int timeout = 0)</span> 
polls the listening sockets for connection requests. <span class="lang">Bindnum</span> 
specifies the socket number reutrned by <span class="lang">bind()</span> or <span class="lang">bindall()</span>. 
If <span class="lang">bindnum</span> is -1 <span class="lang">poll()</span> tests 
all sockets. The second parameter <span class="lang">timeout</span> specifies 
the amount of time in milliseconds to wait for a connection request. If <span class="lang">timeout</span> 
is 0 <span class="lang">poll()</span> returns immediately; if it's -1 <span class="lang">poll()</span> 
waits infinitely. This function returns <span class="lang">true</span> if there 
is a new connection request waiting for processing.</p>
<p><span class="def">bool ipstmserver::serve(ipstream& client, int bindnum 
= -1, int timeout = -1)</span> polls the specified bound sockets for connection 
requests. If there is a connection request, <span class="lang">serve()</span> 
opens and prepares the supplied <span class="lang">ipstream</span> object for 
communicating with the client, i.e. <span class="lang">client</span> will be active 
upon return from <span class="lang">serve()</span> and will contain the peer IP 
address and the port number. The meanings of <span class="lang">bindnum</span> 
and <span class="lang">timeout</span> are the same as for <span class="lang">poll()</span> 
except that the default value for <span class="lang">timeout</span> in this case 
is -1, i.e. wait infinitely. This function returns <span class="lang">true</span> 
if there is a new connection request and <span class="lang">client</span> is active, 
or <span class="lang">false</span> if the call has timed out.</p>
<p><span class="def">virtual void ipstmserver::sockopt(int socket)</span> - override this method in a descendant class if you want to set up additional socket options (normally, by calling <span class="lang">setsockopt()</span>).</p>
<p class="seealso">See also: <a href="inet.ipstream.html">ipstream</a>, <a href="inet.utils.html">Utilities</a>, 
<a href="inet.examples.html">Examples</a></p>
<!-- #EndEditable -->
<hr size="1">
<a href="../index.html" class="ns">PTypes home</a>
</body>
<!-- #EndTemplate --></html>
Source at commit 209d6fa3805c created 11 years 7 months ago.
By Nathan Adams, Updating tparray to use variants as array because tpodlist was causing variant data corruption

Archive Download this file

Branches

Tags

Page rendered in 0.77035s using 11 queries.