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 tip created 11 years 7 months ago.
By Nathan Adams, Updating makefile

Archive Download this file

Branches

Tags

Page rendered in 0.73044s using 11 queries.