Provided by: libbobcat-dev_6.04.00-1ubuntu3_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 <string>
           #include <bobcat/clientsocket>
           #include <bobcat/ifdstream>
           #include <bobcat/ofdstream>

           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 = stoul(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.

BOBCAT PROJECT FILES

       o      https://fbb-git.gitlab.io/bobcat/: gitlab project page;

       o      bobcat_6.04.00-x.dsc: detached signature;

       o      bobcat_6.04.00-x.tar.gz: source archive;

       o      bobcat_6.04.00-x_i386.changes: change log;

       o      libbobcat1_6.04.00-x_*.deb: debian package containing the libraries;

       o      libbobcat1-dev_6.04.00-x_*.deb: debian package containing the libraries, headers and manual pages;

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).

libbobcat-dev_6.04.00                               2005-2023                         FBB::ClientSocket(3bobcat)