FBB::ClientSocket(3bobcat) Client Socket FBB::ClientSocket(3bobcat)
FBB::ClientSocket - Client Socket connecting to a Server in the Internet
Linking option: -lbobcat
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 avaiable FBB::IFdStream, FBB::IFdStreamBuf, FBB::OFd-
Stream, 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 tai-
lor-made protocol. The latter situation implies that the sequence of input- and output operations is defined by the programmer.
All constructors, members, operators and manipulators, mentioned in this man-page, are defined in the namespace FBB.
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::Errno 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. The copy constructor
is not available.
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::Errno exception is thrown if the con-
nection could not be established or if the SocketBase base class could not properly be constructed.
See also the serversocket(3bobcat) example.
using namespace std;
using namespace FBB;
int main(int argc, char **argv)
if (argc == 1)
cerr << "Provide servername and port number
size_t port = A2x(argv);
ClientSocket client(argv, port);
int fd = client.connect();
cout << "Connecting to socket " << fd << endl <<
"address = " << client.dottedDecimalAddress() << ", " <<
"communication through port " << client.port() << endl;
IFdStream in(fd); // stream to read from
OFdStream out(fd); // stream to write to
// Ask for a textline, stop if
cout << "? "; // empty / none
if (!getline(cin, line) || line.length() == 0)
cout << "Line read: " << line << endl;
// Return the line to the server
out << line.c_str() << endl;
cout << "wrote line
getline(in, line); // Wait for a reply from the server
cout << "Answer: " << line << endl;
catch (Errno const &err)
cerr << err.what() << "
"Can't connect to " << argv << ", port " <<
argv << endl;
bobcat/clientsocket - defines the class interface
bobcat(7), ifdstream(3bobcat), ifdstreambuf(3bobcat), inetaddress(3bobcat), localclientsocket(3bobcat), ofdstream(3bobcat), ofdstream(3bob-
cat), serversocket(3bobcat), socketbase(3bobcat)
o bobcat_3.01.00-x.dsc: detached signature;
o bobcat_3.01.00-x.tar.gz: source archive;
o bobcat_3.01.00-x_i386.changes: change log;
o libbobcat1_3.01.00-x_*.deb: debian package holding the libraries;
o libbobcat1-dev_3.01.00-x_*.deb: debian package holding the libraries, headers and manual pages;
o http://sourceforge.net/projects/bobcat: public archive location;
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).
Frank B. Brokken (firstname.lastname@example.org).
libbobcat1-dev_3.01.00-x.tar.gz 2005-2012 FBB::ClientSocket(3bobcat)