私は、TCPソケット上でアプリケーション間でバイナリデータをたくさん送信しましたが、文字列を使用する前には使用しませんでした。そうしようとしている問題につまずいた。ここに私が持っているものがあります: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();
ネットワークストリームを閉じずに文字列を送信するにはどうしたらいいですか? ns.Flush()は、私が本当に探しているものです。
フラッシングについての言葉。 NetworkStreamのドキュメントから、ns.Flush()は何もせず、sw.Flush()は将来の使用のために予約されているので、この場合のフラッシュは何もしません。 –
これは間違っています(間違いは、文書の間違いです)。 ns.Flush()は将来の使用のために予約されていますが、sw.Flush()では予約されていません。私がsw.Flush()をコメントアウトすると失敗します。 – BlueVoodoo