FBB::ClientSocket(3bobcat) | Client Socket | FBB::ClientSocket(3bobcat) |
FBB::ClientSocket - Client Socket connecting to a Server in the Internet
#include <bobcat/clientsocket>
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 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.
FBB
All constructors, members, operators and manipulators, mentioned in this
man-page, are defined in the namespace FBB.
FBB::SocketBase
Copy and move constructors (and assignment operators) are not available.
All members of FBB::SocketBase (and thus of FBB::InetAddress) are available, as FBB::ClientSocket inherits from these classes.
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; }
bobcat/clientsocket - defines the class interface
bobcat(7), ifdstream(3bobcat), ifdbuf(3bobcat), inetaddress(3bobcat), localclientsocket(3bobcat), ofdstream(3bobcat), ofdstream(3bobcat), serversocket(3bobcat), socketbase(3bobcat)
None Reported.
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 (f.b.brokken@rug.nl).
2005-2023 | libbobcat-dev_6.04.00 |