|
分類:[.NET 全般]
ネットワークストリームからデータを取得するプログラムを作っています。 相手側からは連続した文字列データが送信されてきますので、こちら側では下記を 無限ループ内に記述してデータを受信しています。
private TcpClient client;
StreamReader reader = new StreamReader(client.GetStream(), new UTF8Encoding()); String msg = reader.ReadLine();
ここで問題なのですが、相手側はこちらの受信開始または完了を意識せず、ひたすらデータを 送り続けてきます。 このコーディングですと、受信の際にデータの取りこぼしが発生しています。
また、次のようにもしてみましたが、結果は同じでした。
StreamReader reader = new StreamReader(client.GetStream(), new UTF8Encoding()); //String msg = reader.ReadLine(); String msg = ""; int c = reader.Read(); if (c == -1) return null;
while (c != '\n') { msg += (char)c; c = reader.Read(); }
そもそもStreamReaderを使っていてはだめなのでしょうか。 取りこぼさないように受信できる方法を教えて下さい。
|