NAME¶
FBB::LocalClientSocket - Client Socket connecting to a Server in the Unix Domain
SYNOPSIS¶
#include <bobcat/localclientsocket>
Linking option:
-lbobcat
DESCRIPTION¶
An
FBB::LocalClientSocket may be constructed to connect to a server
process in the Unix Domain. The socket made available by the
FBB:LocalClientSocket may be used to initialize a
std::istream
and/or
std::ostream. The
std::istream is used to read
information from the server process to which the
FBB::LocalClientSocket
connects, The
std::ostream is used to send information to the server
process to which the
FBB::LocalClientSocket connects. Since a socket
may be considered a
file descriptor the avaiable
FBB::IFdStream,
FBB::IFdStreamBuf,
FBB::OFdStream, and
FBB::OFdStreamBuf
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.
NAMESPACE¶
FBB
All constructors, members, operators and manipulators, mentioned in this
man-page, are defined in the namespace
FBB.
INHERITS FROM¶
FBB::LocalSocketBase
CONSTRUCTOR¶
- o
- LocalClientSocket():
This constructor merely creates a FBB::LocalClientSocket object.
Before it can be used, its open() member must be called.
- o
- LocalClientSocket(std::string const &name):
This constructor initializes an FBB::LocalClientSocket object, using
the named Unix Domain socket to connect to the server using the named Unix
Domain socket. An FBB::Errno is thrown if the socket could not be
constructed. The construction of the socket does not mean that a
connection has actually been established. In order to connect to the
server, the member connect() (see below) should be used. The copy
constructor is not available.
MEMBER FUNCTION¶
- o
- int connect():
This member returns a socket that can be used to communicate with the server
process. An FBB::Errno exception is thrown if the connection could
not be established.
- o
- open(std::string const &name):
This member function prepares the FBB::LocalClientSocket object,
constructed earlier using the default constructor, for use. The named Unix
Domain socket is used to connect to the server using the named Unix Domain
socket. An FBB::Errno is thrown if the socket could not be
constructed. The construction of the socket does not mean that a
connection has actually been established. In order to connect to the
server, the member connect() should be used.
EXAMPLE¶
See also the
localserversocket(3bobcat) example.
#include <iostream>
#include <bobcat/localclientsocket>
#include <bobcat/ifdstream>
#include <bobcat/ofdstream>
using namespace std;
using namespace FBB;
int main(int argc, char **argv)
try
{
if (argc == 1)
{
cerr << "Provide filename representing the unix domain socket\n";
return 1;
}
LocalClientSocket client(argv[1]);
int fd = client.connect();
string line;
cout << "Connecting to socket " << fd << endl;
IFdStream in(fd); // stream to read from
OFdStream out(fd); // stream to write to
while (true)
{
// Ask for a textline, stop if empty / none
cout << "? ";
if (!getline(cin, line) || line.length() == 0)
return 0;
cout << "Line read: " << line << endl;
// Return the line to the server
out << line.c_str() << endl;
cout << "wrote line\n";
// Wait for a reply from the server
getline(in, line);
cout << "Answer: " << line << endl;
}
return 0;
}
catch (Errno const &err)
{
cerr << err.what() << "\n" <<
"Can’t connect to " << argv[1] << ", port " << argv[2] << endl;
return 1;
}
FILES¶
bobcat/localclientsocket - defines the class interface
SEE ALSO¶
bobcat(7),
ifdstream(3bobcat),
ifdstreambuf(3bobcat),
clientsocket(3bobcat),
localserversocket(3bobcat),
localsocketbase(3bobcat),
ofdstream(3bobcat),
ofdstream(3bobcat)
BUGS¶
None Reported.
DISTRIBUTION FILES¶
- o
- bobcat_3.01.00-x.dsc: detached signature;
- o
- bobcat_3.01.00-x.tar.gz: source archive;
- o
- bobcat_3.01.00-x_i386.changes: change log;
- o
- libbobcat1_3.01.00-x_*.deb: debian package holding
the libraries;
- o
- libbobcat1-dev_3.01.00-x_*.deb: debian package
holding the libraries, headers and manual pages;
- o
- http://sourceforge.net/projects/bobcat: public
archive location;
BOBCAT¶
Bobcat is an acronym of `Brokken’s Own Base Classes And Templates’.
COPYRIGHT¶
This is free software, distributed under the terms of the GNU General Public
License (GPL).
AUTHOR¶
Frank B. Brokken (
f.b.brokken@rug.nl).