2 * Cliente que envía operaciones al hash del servidor.
12 int main(int argc, char *argv[])
17 char *localhost = "localhost";
20 const char *pname = argv[0];
22 // mostrar el pid del cliente
24 print_msg(stdout, "%s Cliente con pid = %d\n", pname, pid);
26 // Verifico parametros de linea de comandos
28 port = atoi (argv[2]);
30 port = LIBTCP_DEFAULT_TCP_PORT;
34 // valor incorrecto: aviso y terminar
35 print_msg(stdout, "%s (%d): Nro. de port invalido %d\n", pname, pid, port);
40 server_name = argv[1];
42 server_name = localhost;
44 // id del cliente, por default calculado en base al pid
46 client_id = atoi(argv[3]);
51 sockfd = libtcp_open_activo(server_name, port);
57 print_msg(stdout, "%s (%d): Nombre de server no existe %s\n", pname, pid, server_name);
62 perror("Error al llamar a libtcp_open_activo");
69 while (std::getline(std::cin, line))
71 std::istringstream iss(line);
73 if (!(iss >> token)) return 0;
78 else if (token == "find")
80 type = Protocol::FIND;
82 else if (token == "del")
88 print_msg(stderr, "%s (%d): Invalid token %s!\n", pname, pid, token.c_str());
93 Protocol proto(type, 0, client_id, token.size());
94 print_msg(stdout, "%s (%d): escribiendo %s\n", pname, pid, token.c_str());
95 if (libtcp_send(sockfd, (char*) &proto, sizeof(Protocol)) != sizeof(Protocol)
96 || libtcp_send(sockfd, token.c_str(), token.size()) != token.size())
98 print_msg(stderr, "%s (%d): error en envio sobre el socket\n", pname, pid);
102 Protocol proto(type, 1, client_id, 0);
103 if (libtcp_send(sockfd, (char*) &proto, sizeof(Protocol)) != sizeof(Protocol))
105 print_msg(stderr, "%s (%d): error en envio sobre el socket\n", pname, pid);
108 // Esperando respuesta del servidor con el resultado
110 int n = libtcp_receive(sockfd, (char*) &response, sizeof(response));
113 print_msg(stderr, "%s (%d): error en recibir\n", pname, pid);
117 print_msg(stdout, "%s (%d): el server responde %d\n", pname, pid, response);
121 Protocol proto(Protocol::QUIT, 1, client_id, 0);
122 if (libtcp_send(sockfd, (char*) &proto, sizeof(Protocol)) != sizeof(Protocol))
124 print_msg(stderr, "%s (%d): error en envio sobre el socket\n", pname, pid);
133 // vim: set et sw=4 sts=4 :