私はclien-server.netアプリを持っています、それらはtcpを介して通信します。サーバーは生のバイトパケットを定期的にクライアントに送信します。
99.9%の確率でうまく機能しますが、クライアントの1つがクラッシュすると(年に2回、それ以上ではない)、サーバーがハングすることがあります。
私はそれをデバッグしました(私のアプリをクラッシュさせるいくつかのテストコードをクライアントに追加することによって)、そして問題がにあることに気づきましたstream.Write(bytes, 0, bytes.Length);
。単純なことは何もせず、応答も戻りもせず、ただハングします。ストリームはNetworkStreamです。
前に確認stream.CanWrite
しましたが、trueと応答します。
では、クライアントの1つがクラッシュしたことをサーバー側で確認するにはどうすればよいですか?他のクライアントにデータを送信する前に、NetworkStream(または他の何か)で何を確認する必要がありますか?