質問: networkstreamからのread()で、処理が止まる(c#) c#で、サーバーを作っています。 readで読み込んで、次に、 writeで、「ありがとうございました!!」など、 書き出しているのですが、 いままで、それなりに動いたいました。 しかし、クライアント側で、何も書き出さないと、 read()の部分で、プログラム止まって(待機して) しまっていることが分かりました。 クライアントが、何も書き出さないときは、 さっさと、「ありがとう・・」と書き出して、 終了したいのですが、30秒ほど待機して、 接続が切れてしまうようです(writeもしない)。 readは終端-1がくるまで、待機してしまうの だと思います(文字が送られないときは、これが ないので、待機してしまうのかな)。 例えば、送られてくるデータが、もともと無い、 ということを、あらかじめ認識し、 または、5秒くらいで、データが来なければ、 処理を次に移す、といった処理の仕方は、 できないでしょうか。 お願いします。
回答: readする前にnetworkstreamクラスのreadtimeoutを設定すれば、 たぶん0でリターンすると思います。 今回の場合、 xxx.readtimeout = 5000; でいいと思います。(ミリ秒単位) 試してないのでわからないです。結果報告いただけるとありがたいです。 (たまに自分も今回のような問題に出くわすので)