誰もがこれを経験していますか?私はねじれたアプリを持っています。クライアントはサーバーに接続します。クライアントがサーバーに接続しても、そのIPアドレスからのクライアントが既に実行されている場合は、新しいクライアントの接続を切断する機能を追加しました。クライアントが切断されていることを検出していません。
しばらくして、Pythonプログラムを手動でオフにすることなく、クライアントコンピュータ(または正確にはVM)をシャットダウンしました。これを行うと、しばらくしてもかなり頻繁に、サーバーは切断を検出しません。コンピュータが復帰して再接続しようとすると、サーバはそのIPからの接続が既にあると主張します。私が今までに見つけた唯一の解決策は、サーバーを再起動することです。
接続が切断されていないという奇妙なネットワーキングの問題はありますか?ツイストバグ?
私は、コードを切断して処理するバグではないことを99%確信しています。私のコードは、マシンがシャットダウンするほとんどの場合を含め、接続が失われるたびにconnectionLost
が呼び出されるように設定されています。何か異常が発生した場合に何が切断されたか、または例外をスローする文字列を記録します。これらの事のどちらもログに現れなかった。
ツイストフレームワークには、すべての概念レベル(トランスポート/接続、プロトコルなど)でイベントとイベントハンドラが定義されており、切断を処理します。だから、コードを調べれば助けになるだろう。その動作を示すコードの簡略版を投稿することができます。 – pyfunc
@pyfunc:コードを掘り下げます。ネットワークの問題が疑われます。なぜなら、クライアントに再接続を試みさせてしまい、場合によっては結局接続できたからです(他のケースではそうではありません)。 – Claudiu