--- /dev/null
+#
+# $Id$
+#
+
+# Opciones para el compilador.
+CXXFLAGS=-ansi -pedantic -Wall -g3 `skstream-config --cflags`
+LDFLAGS=`skstream-config --libs`
+
+# Regla por defecto.
+cliente: cliente.cc
+
--- /dev/null
+/* vim: set ts=4 sw=4 :
+ *
+ * Prueba de cliente echo con skstream.
+ *
+ * Para compilar:
+ * g++ `skstream-config --cflags --libs` -o cliente cliente.cc
+ *
+ * Necesita paquete libskstream-0.2 y libskstream-dev
+ *
+ */
+
+#include <skstream/skstream.h>
+#include <iostream>
+#include <sstream>
+
+using namespace std;
+
+int main(int argc, char* argv[]) {
+ // Necesita argumentos.
+ if (argc < 3 || argc > 4) {
+ cerr << "Faltan argumentos: " << endl;
+ cerr << "\t" << argv[0] << " host port" << endl;
+ cerr << endl;
+ cerr << "Por la entrada estándar se ingresan los datos a mandar "
+ "al servidor." << endl;
+ cerr << "Cuando se escribe toda la petición, con Ctrl-D envía los "
+ "datos." << endl;
+ return 1;
+ }
+
+ // Obtengo host y puerto.
+ string host = argv[1];
+ int port;
+ {
+ stringstream str(argv[2]);
+ str >> port;
+ }
+
+ // Socket TCP.
+ tcp_socket_stream sock(host, port);
+ if (!sock.is_open()) {
+ cerr << "No se pudo abrir el socket (error " << sock.getLastError()
+ << ")." << endl;
+ return 2;
+ }
+
+ char buff[4096];
+
+ // Envio pedido.
+ while (cin.getline(buff, 4096)) {
+ sock << buff << endl;
+ }
+
+ // Recibo respuesta.
+ while (sock.getline(buff, 4096)) {
+ cout << buff << endl;
+ }
+
+ return 0;
+}