Título: Programación sockets en C en Unix Publicado por: marccamacho en 17 Octubre 2012, 23:12 pm Buenas noches a todos,
Este es mi primer post. Por lo tanto, mucho gusto de poder participar! La cuestión es la siguiente. En clase me han pedido implementar una aplicación de mensajeria instantánia con Sockets y en lenguaje C. Todo va bien hasta que me piden que, sin interfaz gráfica, pula los mensajes que me salen en la terminal. Que quiero decir con pulir? Por ejemplo: El usuario local está escriviendo una línea de texto, y justo en medio de la línea, recibe una del usuario remoto. Entonces, el texto queda mezclado de la siguiente manera: HOLA SOY EL Mensaje del usuario remoto: BIENVENIDO YANTASH REMOTO, BUENAS NOCHES. Dónde el color azul representa la línea que estaba escribiendo el usuario local, y el rojo el usuario remoto. Tendría que intentar evitar esto. Ideas? Dividir terminal (no encuentro como hacerlo sin usar SCREEN), mover el cursor (luego, cuando llega al fin de la ventana se vuelve loco)... No encuentro como hacerlo! Si alguien me pudiera ayudar se lo agradecería mucho! Muchas gracias de antemano!!! PD. pido perdón de antemano por si no he situado bien el post... Soy un noob! Título: Re: Programación sockets en C en Unix Publicado por: 0xDani en 18 Octubre 2012, 12:21 pm Pon algo de codigo, por que no se como estas haciendo la entrada de datos a la vez que lees del socket.
Título: Re: Programación sockets en C en Unix Publicado por: marccamacho en 18 Octubre 2012, 14:39 pm Perdón, tienes razón!
Te adjunto el código, tenemos implementado dos métodos, uno que envia la información y otro que la recibe. Código: int MI_ProcessaLiniaLocal(int idSocketConversa){ Aquí adjunto mi código del main! Citar switch (haArribat){ case -1: exit (-1); break; case -2: printf("Ha passat el temps màxim d'espera introduït\n"); exit (-1); break; case STDIN: estat = MI_ProcessaLiniaLocal(sConnecta); if (estat == -1) exit (-1); else if (estat == 0) { acabaConversa = close(sConnecta); } break; default: estat = MI_ProcessaLiniaRemota(sConnecta); if (estat == -1) exit (-1); else if (estat == 0) { acabaConversa = close(sConnecta); } break; } Muchas gracias por todo!!! |