localclientsocket3bobcat
Client socket connecting to a server in the unix domain
Usage
#include <bobcat/localclientsocket>
Linking option: -lbobcat
Overview
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 available 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 aFBB::LocalClientSocketobject. Before it can be used, its open() member must be called.
- o
-
LocalClientSocket(std::string const &name):
This constructor initializes anFBB::LocalClientSocketobject, using the named Unix Domain socket to connect to the server using the named Unix Domain socket. AnFBB::Exceptionis 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 memberconnect()(see below) should be used.
Copy and move constructors (and assignment operators) are not available.
Member function
- o
-
int connect():
This member returns a socket that can be used to communicate with the server process. AnFBB::Exceptionexception is thrown if the connection could not be established.
- o
-
open(std::string const &name):
This member function prepares theFBB::LocalClientSocketobject, 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. AnFBB::Exceptionis 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 memberconnect()should be used.
Examples
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;
}
}
catch (Exception 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
Bobcat project files
- o
-
https://fbb-git.gitlab.io/bobcat/: gitlab project page;
Debian Bobcat project files:
- o
-
libbobcat6: debian package containing the shared library, changelog and copyright note;
- o
-
libbobcat-dev: debian package containing the static library, headers, manual pages, and developer info;
Bobcat
Bobcat is an acronym of `Brokken’s Own Base Classes And Templates’.
Releases
10 releases since Debian 4.0 (Etch); the text changed 9 times.