oracular (3) clientsocket.3bobcat.gz

Provided by: libbobcat-dev_6.06.01-1_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.06.01-x.dsc: detached signature;

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

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

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

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

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