logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

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

Author

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

libbobcat-dev_6.07.01                               2005-2025                         FBB::ClientSocket(3bobcat)

Bobcat

       Bobcat is an acronym of `Brokken’s Own Base Classes And Templates’.

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;

Bugs

       None Reported.

Constructor

       o      ClientSocket(std::stringconst&host,uint16_tport):
              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.

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

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

Inherits From

FBB::SocketBase

Member Functions

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

       o      intconnect():
              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.

Name

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

Namespace

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

See Also

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

Synopsis

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

See Also