※ ChatGPTを利用し、要約された質問です(原文:NetworkStreamからのRead()で、処理が止まる(C#))
C#でNetworkStreamからのRead()で処理が止まる
このQ&Aのポイント
C#のサーバーで、NetworkStreamからのRead()で処理が止まる場合、クライアントが何も書き出さないとプログラムが待機状態になり、接続が切れることがある。
Readは終端-1がくるまで待機してしまうため、送られてくるデータがない場合にも待機してしまう。
処理を進めるためには、あらかじめデータの存在を確認するか、一定時間でデータが来ない場合に次の処理に移すなどの対策が必要となる。
NetworkStreamからのRead()で、処理が止まる(C#)
C#で、サーバーを作っています。
Readで読み込んで、次に、
Writeで、「ありがとうございました!!」など、
書き出しているのですが、
いままで、それなりに動いたいました。
しかし、クライアント側で、何も書き出さないと、
Read()の部分で、プログラム止まって(待機して)
しまっていることが分かりました。
クライアントが、何も書き出さないときは、
さっさと、「ありがとう・・」と書き出して、
終了したいのですが、30秒ほど待機して、
接続が切れてしまうようです(Writeもしない)。
Readは終端-1がくるまで、待機してしまうの
だと思います(文字が送られないときは、これが
ないので、待機してしまうのかな)。
例えば、送られてくるデータが、もともと無い、
ということを、あらかじめ認識し、
または、5秒くらいで、データが来なければ、
処理を次に移す、といった処理の仕方は、
できないでしょうか。
お願いします。
お礼
回答ありがとうございます。 お礼遅れてすいません(少し、忙しかったので)。 また、少し、PCをいじろうと思いますので、 この方法を、試してみます。 (ネットワークプログラムをやってきて、 この問題は、初めてなのが、不思議です)。 結果報告できたら良かったのですが、 プログラムには、体力がいるので、時間かかる と思い、質問を閉じます。 どうもありがとうございました。 また、お願いします。