Hola a todos. Les platico el problema.
Tengo una aplicación de consola hecha en c# que funciona como cliente de un Servidor remoto el cual no tengo idea de cómo esté programado, pero sé que recibe peticiones en un puerto de un socket. Mi aplicación al iniciar crea un objeto tcpClient que abre una conexión con el servidor y envía como mensajes cadenas de texto plano. Hasta aqui no hay problema. Mando mi mensaje y el servidor lo recibe. El envío de mensajes lo hago a través de un streamwriter, mediante una función que se llama EnviarMensaje : StreamWriter sw; sw = new streamWriter(tcpClient.getStream()); sw.WriteLine(mensaje) sw.flush(); Para la recepción de los mensajes que me manda el servidor, he creado un streamReader que lee los datos del mismo stream del tcpClient. Algo como; StreamReader sr; sr = new StreamReader(tclClient.getStream()); string respuesta = sw.ReadLine(); El envío de mensajes funciona ok. El problema es que no recibo los mensajes que me manda el servidor. La recepción de mensajes del servidor se hace en un thread que dentro de un ciclo while (mientras esté conectado), debe guardar en un string lo que obtenga de sr.ReadLine(); Esta aplicación funciona bien en mi entorno de desarrollo, junto con una aplicación de prueba que hice para simular al servidor real al que tengo que conectarme. El problema surgió ahora que ya tuve que conectarme al servidor real. Recibe mis mensajes pero mi aplicación no recibe los del servidor. Parece que nunca se cumple la condición while(conected) ¿cómo es posible que todo funcione sin problemas en mi entorno y no reciba nada cuando intento comunicación con el servidor real? Un detalle es que sí recibí las respuestas del servidor, pero solo hasta que la aplicación del servidor se cerró, ¿No es correcto que use el mismo tcpclient para leer y escribir del Stream? ¿Tendría que tener en mi aplicación cliente un tcpListener para recibir los mensajes? Pero si así fuera, no tendría que funcionar tampoco en mi entorno de prueba ¿o si? ¿y por que funcionaría solo cuando la aplicación remota se cierra? Gracias de antemano.
