# FBB::SocketBase(3bobcat)

## Base class for sockets
(libbobcat-dev_5.11.00)

## 2005-2022

## NAME

FBB::SocketBase - Base class for socket-constructing classes

## SYNOPSIS

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

## DESCRIPTION

This class is a base class for the FBB::ServerSocket and FBB::ClientSocket classes. Since it is designed as a base class, all its constructors are protected.

## NAMESPACE

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

## INHERITS FROM

FBB::InetAddress

## PROTECTED CONSTRUCTORS

- SocketBase(size_t port):
  This constructor creates a SocketBase to be used with ServerSocket-objects, listening on port.

- SocketBase(std::string const &host, uint16_t port):
  This constructor creates a FBB::SocketBase to be used with a ClientSocket-object, connecting to hostname, at port `port'.

These constructors throw a std::exception if they could not properly complete.

The copy constructor and copy assignment operator are available. Both offer protected access rights.

## PROTECTED MEMBER

- SocketBase makeBase(int socket, sockaddr_in const &address):
  This member returns a FBB::SocketBase object initializing its socket and FBB::InetAddress from the provided arguments.

## MEMBER FUNCTIONS

All members of FBB::InetAddress are available, as FBB::SocketBase inherits from this class.

- bool debug() const:
  This accessor returns true if the socket's debug (SO_DEBUG) socket option is active. It throws an FBB::Exception exception if the status of the debug option could not be determined;

- bool reuse() const:
  This accessor returns true if the socket's reuse (SO_REUSEADDR) socket option is active. It throws an FBB::Exception exception if the status of the reuse option could not be determined;

- void setDebug(bool trueIsOn) const:
  This member may be used to modify the socket's debug (SO_DEBUG) socket option. It throws an FBB::Exception exception if the socket's debug option could not be modified;

- void setReuse(bool trueIsOn) const:
  This member may be used to modify the socket's reuse (SO_REUSEADDR) socket option. It throws an FBB::Exception exception if the socket's reuse option could not be modified;

- int socket() const:
  This accessor returns the FBB::SocketBase's socket value.

## EXAMPLE

The classes FBB::ClientSocket and FBB::ServerSocket were derived from SocketBase. E.g.,

    #ifndef INCLUDED_BOBCAT_CLIENTSOCKET_
    #define INCLUDED_BOBCAT_CLIENTSOCKET_

    #include <string>
    #include <bobcat/socketbase>

    namespace FBB
    {

    class ClientSocket: public SocketBase
    {
        public:
                                    // host may be address or name
            ClientSocket(std::string const &host, uint16_t port);

            int connect();          // returns fd (socket) to talk to the server
    };

    } // FBB

    #endif

See the clientsocket(3bobcat) man-page for an example showing how to use FBB::ClientSocket.

## FILES

bobcat/socketbase - defines the class interface

## SEE ALSO

bobcat(7), clientsocket(3bobcat), inetaddress(3bobcat), localsocketbase(3bobcat), serversocket(3bobcat)

## BUGS

None Reported.

## BOBCAT PROJECT FILES

- https://fbb-git.gitlab.io/bobcat/: gitlab project page;
- bobcat_5.11.00-x.dsc: detached signature;
- bobcat_5.11.00-x.tar.gz: source archive;
- bobcat_5.11.00-x_i386.changes: change log;
- libbobcat1_5.11.00-x_*.deb: debian package containing the libraries;
- libbobcat1-dev_5.11.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).