/usr/share/doc/libbobcat4-dev/man/localserversocket.3.html is in libbobcat-dev 4.01.03-2ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 | <!DOCTYPE html><html><head>
<meta charset="UTF-8">
<title>FBB::LocalServerSocket</title>
<style type="text/css">
figure {text-align: center;}
img {vertical-align: center;}
</style>
<link rev="made" href="mailto:Frank B. Brokken: f.b.brokken@rug.nl">
</head>
<body text="#27408B" bgcolor="#FFFAF0">
<hr>
<h1>FBB::LocalServerSocket</h1>
<h2>libbobcat-dev_4.01.03-x.tar.gz</h2>
<h2>2005-2015</h2>
<!DOCTYPE html><html><head>
<meta charset="UTF-8">
<style type="text/css">
figure {text-align: center;}
img {vertical-align: center;}
figure {text-align: center;}
img {vertical-align: center;}
</style>
<link rev="made" href="mailto:Frank B. Brokken: f.b.brokken@rug.nl">
</head>
<body text="#27408B" bgcolor="#FFFAF0">
<hr>
<h1></h1>
<!DOCTYPE html><html><head>
<meta charset="UTF-8">
<title>FBB::LocalServerSocket(3bobcat)</title>
<style type="text/css">
figure {text-align: center;}
img {vertical-align: center;}
figure {text-align: center;}
img {vertical-align: center;}
figure {text-align: center;}
img {vertical-align: center;}
</style>
<link rev="made" href="mailto:Frank B. Brokken: f.b.brokken@rug.nl">
</head>
<body text="#27408B" bgcolor="#FFFAF0">
<hr>
<h1>FBB::LocalServerSocket(3bobcat)</h1>
<h2>libbobcat-dev_4.01.03-x.tar.gz Unix Domain Server Socket</h2>
<h2>2005-2015</h2>
<p>
<h2>NAME</h2>FBB::LocalServerSocket - Unix Domain Server socket accepting connection requests
<p>
<h2>SYNOPSIS</h2>
<strong>#include <bobcat/localserversocket></strong><br>
Linking option: <em>-lbobcat</em>
<p>
<h2>DESCRIPTION</h2>
An <strong>FBB::LocalServerSocket</strong> defines a Unix Domain server socket,
listening for connection requests from the local host using a Unix Domain
socket. Connection requests may be accepted in either <em>blocking</em> or
<em>non-blocking</em> modes. When a connection is accepted a socket is returned
which may be used to read information from or write information to the client
requesting the connection. The socket that is made available is a <em>file
descriptor</em> which may be used to initialize a <strong>std::istream</strong> and/or
<strong>std::ostream</strong>. The <strong>std::istream</strong> is used to read information from the
client process; the <strong>std::ostream</strong> is used to send information to the client
process. Since a socket may be considered a <em>file descriptor</em> the available
<strong>FBB::IFdStream</strong>, <strong>FBB::IFdStreamBuf</strong>, <strong>FBB::OFdStream</strong>, and
<strong>FBB::OFdStreamBuf</strong> classes may be used profitably here. Note that having
available a socket does not mean that this defines the communication
protocol. It is (still) the responsibility of the programmer to comply with an
existing protocol or to implement a tailor-made protocol. The latter situation
implies that the sequence of input- and output operations is defined by the
programmer.
<p>
<h2>NAMESPACE</h2>
<strong>FBB</strong><br>
All constructors, members, operators and manipulators, mentioned in this
man-page, are defined in the namespace <strong>FBB</strong>.
<p>
<h2>INHERITS FROM</h2>
<strong>FBB::LocalSocketBase</strong>
<p>
<h2>ENUMERATION</h2>
The following enumeration is defined in th class
<strong>FBB::LocalServerSocket</strong>:
<p>
<strong>enum Socket</strong><br>
This enumeration holds two values:
<ul>
<li> <strong>KEEP</strong>:<br>
When this value is specified at construction time, the file
representing the Unix Domain Socket is not removed when the
<strong>LocalServerSocket</strong> is destroyed.
<li> <strong>UNLINK</strong>:<br>
When this value is specified at construction time, the file
representing the Unix Domain Socket is removed when the <strong>LocalServerSocket</strong>
is destroyed. As a socket cannot be reused, this is the default value used
with the <strong>LocalServerSocket</strong> constructor.
</ul>
<p>
<h2>CONSTRUCTOR</h2>
<ul>
<li> <strong>LocalServerSocket()</strong>:<br>
This constructor creates an empty (non-functioning)
<em>FBB::LocalServerSocket</em> object. Before it can be used, the <em>open()</em> member
must be called (see below).
<li> <strong>LocalServerSocket(string const &name, Socket action = UNLINK)
throw (Exception)</strong>:<br>
This constructor initializes an <strong>FBB::LocalServerSocket</strong> object,
which will listen for connection requests using the named Unix Domain
socket. An <strong>FBB::Exception</strong> is thrown if the socket could not be
constructed. If the constructor is given a second argument
<em>FBB::LocalServerSocket::KEEP</em>, the constructed socket is not unlinked
when the <strong>FBB::LocalServerSocket</strong> object is destroyed. The construction of
the socket does not mean that the <strong>FBB::LocalServerSocket</strong> object is
actually listening for connections. To start listening, the member
<strong>listen()</strong> should be called.
</ul>
The copy constructor is not available.
<p>
<h2>MEMBER FUNCTIONS</h2>
<ul>
<li> <strong>size_t accept()</strong>:<br>
The <strong>accept()</strong> member returns an <em>size_t</em> which is a file
descriptor (socket) that may be used to communicate with the client requesting
the connection. In more complex programs the returned file descriptor (socket)
could be passed to a class derived from <strong>FBB::Fork</strong>, handling the
communication with the child as a separate (child) process.
<p>
<li> <strong>void listen(size_t backlog = 5, bool blocking = true)</strong>:<br>
The <strong>listen()</strong> member defines the way the <strong>FBB::LocalServerSocket</strong>
will listen for clients requesting a connection. It can be used only once
with a <strong>FBB::LocalServerSocket</strong>. An <strong>FBB::Exception</strong> object is thrown if
listening fails.
<p>
The <strong>listen()</strong> member's <em>backlog</em> parameter defines the size of the
<strong>FBB::LocalServerSocket</strong>'s internal queue in which connection requests may be
stored waiting for their turn to be serviced. When <em>backlog</em> requests are
waiting and another request arrives, then that request is lost.
<p>
The member's second parameter, <em>blocking</em>, is used to control the
blocking mode. By default, blocking is used, and <em>listen()</em> will wait until
a connection is established. This is ok in situations where clients connect
infrquently and for relatively short time intervals. Otherwise, in more
complex programs, an <strong>FBB::Selector</strong> object can be used to sense input on
the server socket and/or on various client sockets.
<p>
<li> <strong>void open(string const &name, Socket action = UNLINK)</strong>:<br>
This member prepares a <strong>FBB::LocalServerSocket</strong> object for use. It
should only be used in combination with the default constructor. Following
<em>open()</em> the <em>FBB:::LocalServerSocket</em> object will be able to listen for
connection requests using the named Unix Domain socket. An <strong>FBB::Exception</strong>
is thrown if the socket could not be constructed. If the a second argument
<em>FBB::LocalServerSocket::KEEP</em>, is provided the constructed socket is not
unlinked when the <strong>FBB::LocalServerSocket</strong> object is destroyed. The
construction of the socket does not mean that the <strong>FBB::LocalServerSocket</strong>
object is actually listening for connections. To start listening, the member
<strong>listen()</strong> should be called next.
</ul>
<p>
<h2>EXAMPLE</h2>
See also the <strong>localclientsocket</strong>(3bobcat) example.
<pre>
#include <iostream>
#include <bobcat/localserversocket>
#include <bobcat/ifdstream>
#include <bobcat/ofdstream>
using namespace std;
using namespace FBB;
int main(int argc, char **argv)
try
{
if (argc == 1)
{
cerr << "Provide local filename, e.g., /tmp/uds\n";
return 1;
}
LocalServerSocket server(argv[1]);
cerr << "server using `" << argv[1] << "'" << endl;
cout <<
"The server terminates when it receives a single `q' on a line\n"
"A connection is terminated when no input is received anymore.\n"
"Then another connection is possible" << endl;
server.listen(); // listen in blocking mode
while (true)
{
int fd = server.accept();
cerr << "Client FD = " << fd << ", " << endl;
IFdStream in(fd); // stream to read from client
OFdStream out(fd); // stream to write to client
string cmd;
while (getline(in, cmd))
{
cout << "Got: " << cmd << endl;
out << "Got: " << cmd << "\r" << endl;
if (cmd[0] == 'q')
return 0;
}
cout << "Ready for another connection\n";
}
}
catch (Exception const &err)
{
cerr <<
err.what() << endl <<
"Server socket on port " << argv[1] <<
" can't be opened" << endl;
return -1;
}
</pre>
<p>
<h2>FILES</h2>
<em>bobcat/serversocket</em> - defines the class interface
<p>
<h2>SEE ALSO</h2>
<strong>bobcat</strong>(7), <strong>localclientsocket</strong>(3bobcat), <strong>fork</strong>(3bobcat),
<strong>ifdstream</strong>(3bobcat), <strong>ifdstreambuf</strong>(3bobcat),
<strong>localsocketbase</strong>(3bobcat), <strong>ofdstream</strong>(3bobcat), <strong>ofdstream</strong>(3bobcat),
<strong>select</strong>(2), <strong>selector</strong>(3bobcat), <strong>serversocket</strong>(3bobcat)
<p>
<h2>BUGS</h2>
None Reported.
<p>
<h2>DISTRIBUTION FILES</h2>
<ul>
<li> <em>bobcat_4.01.03-x.dsc</em>: detached signature;
<li> <em>bobcat_4.01.03-x.tar.gz</em>: source archive;
<li> <em>bobcat_4.01.03-x_i386.changes</em>: change log;
<li> <em>libbobcat1_4.01.03-x_*.deb</em>: debian package holding the
libraries;
<li> <em>libbobcat1-dev_4.01.03-x_*.deb</em>: debian package holding the
libraries, headers and manual pages;
<li> <em>http://sourceforge.net/projects/bobcat</em>: public archive location;
</ul>
<p>
<h2>BOBCAT</h2>
Bobcat is an acronym of `Brokken's Own Base Classes And Templates'.
<p>
<h2>COPYRIGHT</h2>
This is free software, distributed under the terms of the
GNU General Public License (GPL).
<p>
<h2>AUTHOR</h2>
Frank B. Brokken (<strong>f.b.brokken@rug.nl</strong>).
<p>
|