He estado enviando datos binarios entre aplicaciones muchas veces a través de sockets TCP pero nunca antes he usado cadenas. Bumbed en un problema con la intención de hacerlo. Esto es lo que obtuve:cadena de lectura/escritura sobre la corriente de red tcp
TcpClient tcpClient = new TcpClient("localhost", port);
//Connects fine
NetworkStream ns = tcpClient.GetStream();
StreamWriter sw = new StreamWriter(ns);
//The code moves on but nothing seems to be sent unless I do
//a sw.Close() after this line. That would however close the
//ns and prevent me from reading the response further down
sw.Write("hello");
//I am using a stream reader with ReadToEnd() on the tcpListener
//which never receives the string from this piece of code
//Since the above never actually send I get stuck here
string response = new StreamReader(ns).ReadToEnd();
sw.Close();
tcpClient.Close();
¿Cómo envío la cadena sin cerrar la transmisión de la red? ns.Flush() es lo que estaría buscando realmente.
Una palabra sobre flushing. De la documentación de NetworkStream, ns.Flush() no hace nada, y sw.Flush() está reservado para un uso futuro ... así que supongo que en este caso, el enjuague no sirve para nada. –
Eso no es correcto (si es un error en el documento o no). ns.Flush() está reservado para uso futuro pero no sw.Flush(). Si hago un comentario sobre sw.Flush(), falla. – BlueVoodoo