]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blob - tests/skstream/cliente.cpp
Otro que me sube los .bak! :)
[z.facultad/75.42/plaqui.git] / tests / skstream / cliente.cpp
1 /* vim: set ts=4 sw=4 :
2  *
3  * Prueba de cliente echo con skstream.
4  *
5  * Para compilar:
6  *   g++ `skstream-config --cflags --libs` -o cliente cliente.cc
7  *
8  * Necesita paquete libskstream-0.2 y libskstream-dev
9  * 
10  */
11
12 #include <skstream/skstream.h>
13 #include <iostream>
14 #include <sstream>
15
16 using namespace std;
17
18 int main(int argc, char* argv[]) {
19         // Necesita argumentos.
20         if (argc < 3 || argc > 4) {
21                 cerr << "Faltan argumentos: " << endl;
22                 cerr << "\t" << argv[0] << " host port" << endl;
23                 cerr << endl;
24                 cerr << "Por la entrada estándar se ingresan los datos a mandar "
25                         "al servidor." << endl;
26                 cerr << "Cuando se escribe toda la petición, con Ctrl-D envía los "
27                         "datos." << endl;
28                 return 1;
29         }
30         
31         // Obtengo host y puerto.
32         string host = argv[1];
33         int port;
34         {
35                 stringstream str(argv[2]);
36                 str >> port;
37         }
38
39         // Socket TCP.
40         tcp_socket_stream sock(host, port);
41         if (!sock.is_open()) {
42                 cerr << "No se pudo abrir el socket (error " << sock.getLastError()
43                         << ")." << endl;
44                 return 2;
45         }
46
47         char buff[4096];
48
49         // Envio pedido.
50         while (cin.getline(buff, 4096)) {
51                 sock << buff << endl;
52         }
53
54         // Recibo respuesta.
55         while (sock.getline(buff, 4096)) {
56                 cout << buff << endl;
57         }
58
59         return 0;
60 }