Provided by: libbobcat-dev_5.00.02-2_amd64 bug

NAME

       FBB::ClientSocket - Client Socket connecting to a Server in the Internet

SYNOPSIS

       #include <bobcat/clientsocket>
       Linking option: -lbobcat

DESCRIPTION

       An FBB::ClientSocket may be constructed to connect to some server process in the internet.
       The socket made available by the FBB:ClientSocket 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::ClientSocket connects, The std::ostream is used to send  information  to
       the  server  process  to  which  the  FBB::ClientSocket  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.

       A Unix Domain client socket can be defined using FBB::LocalClientSocket.

NAMESPACE

       FBB
       All  constructors,  members,  operators  and manipulators, mentioned in this man-page, are
       defined in the namespace FBB.

INHERITS FROM

       FBB::SocketBase

CONSTRUCTOR

       o      ClientSocket(std::string const &host, uint16_t port):
              This constructor initializes  an  FBB::ClientSocket  object,  preparing  it  for  a
              connection to the specified port at the given host.  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 FUNCTIONS

       All  members  of  FBB::SocketBase  (and  thus  of  FBB::InetAddress)  are  available,   as
       FBB::ClientSocket inherits from these classes.

       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 or if the SocketBase base class could not properly be constructed.

EXAMPLE

       See also the serversocket(3bobcat) example.

           #include <iostream>
           #include <bobcat/clientsocket>
           #include <bobcat/ifdstream>
           #include <bobcat/ofdstream>
           #include <bobcat/a2x>

           using namespace std;
           using namespace FBB;

           int main(int argc, char **argv)
           try
           {
               if (argc == 1)
               {
                   cerr << "Provide servername and port number\n";
                   return 1;
               }

               size_t     port = A2x(argv[2]);
               ClientSocket client(argv[1], port);
               int fd = client.connect();
               string line;

               cout << "Connecting to socket " << fd << endl <<
                       "address = " << client.dottedDecimalAddress() << ", " <<
                                                                        endl <<
                       "communication through port " << client.port() << endl;

               IFdStream in(fd);                 // stream to read from
               OFdStream out(fd);                // stream to write to

               while (true)
               {
                                           // Ask for a textline, stop if
                   cout << "? ";           // empty / none
                   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";

                   getline(in, line);      // Wait for a reply from the server
                   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/clientsocket - defines the class interface

SEE ALSO

       bobcat(7),        ifdstream(3bobcat),        ifdbuf(3bobcat),        inetaddress(3bobcat),
       localclientsocket(3bobcat), ofdstream(3bobcat), ofdstream(3bobcat), serversocket(3bobcat),
       socketbase(3bobcat)

BUGS

       None Reported.

DISTRIBUTION FILES

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

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

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

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

       o      libbobcat1-dev_5.00.02-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).