FBB::LocalClientSocket(3bobcat)

Unix Domain client Socket
(libbobcat-dev_6.02.02)

2005-2022

NAME

FBB::LocalClientSocket - Client Socket connecting to a Server in the Unix Domain

SYNOPSIS

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

DESCRIPTION

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

NAMESPACE

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

INHERITS FROM

FBB::LocalSocketBase

CONSTRUCTOR

Copy and move constructors (and assignment operators) are not available.

MEMBER FUNCTION

EXAMPLE

See also the localserversocket(3bobcat) example.

    #include <iostream>
    #include <bobcat/localclientsocket>
    #include <bobcat/ifdstream>
    #include <bobcat/ofdstream>

    using namespace std;
    using namespace FBB;

    int main(int argc, char **argv)
    try
    {
        if (argc == 1)
        {
            cerr << "Provide filename representing the unix domain socket\n";
            return 1;
        }

        LocalClientSocket client(argv[1]);
        int fd = client.connect();
        string line;

        cout << "Connecting to socket " << fd << endl;

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

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

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

SEE ALSO

bobcat(7), ifdstream(3bobcat), ifdbuf(3bobcat), clientsocket(3bobcat), localserversocket(3bobcat), localsocketbase(3bobcat), ofdstream(3bobcat), ofdstream(3bobcat)

BUGS

None Reported.

BOBCAT PROJECT FILES

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