focal (3) localclientsocket.3bobcat.gz

Provided by: libbobcat-dev_5.02.00-1build1_amd64 bug

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
       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 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::Exception 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.

       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.  An
              FBB::Exception 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::Exception 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;
               }
           }
           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

SEE ALSO

       bobcat(7),   ifdstream(3bobcat),   ifdbuf(3bobcat),   clientsocket(3bobcat),  localserversocket(3bobcat),
       localsocketbase(3bobcat), ofdstream(3bobcat), ofdstream(3bobcat)

BUGS

       None Reported.

DISTRIBUTION FILES

       o      bobcat_5.02.00-x.dsc: detached signature;

       o      bobcat_5.02.00-x.tar.gz: source archive;

       o      bobcat_5.02.00-x_i386.changes: change log;

       o      libbobcat1_5.02.00-x_*.deb: debian package holding the libraries;

       o      libbobcat1-dev_5.02.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’.

       This is free software, distributed under the terms of the GNU General Public License (GPL).

AUTHOR

       Frank B. Brokken (f.b.brokken@rug.nl).