1

独自のプロトコル用に Python で記述されたサーバーで作業していますが、問題が発生しています。クライアントはサーバーに接続し、sendall()3 つのデータ (パケット識別バイト、文字列の長さ、UTF-8 エンコード文字列) を受け取ります。

クライアント側ではエラーは発生しませんが、サーバー側では次のようになります。

error: [Errno 10054] An existing connection was forcibly closed by the remote host

発生します。エラーは毎回異なる行で発生しrecv()、識別バイトを読み取るとき、文字列の長さを読み取るとき、文字列自体を読み取るときに発生し、想定どおりに完全に正常に動作することもあります。

ここで何が起こっているのですか?サーバー コンピューターにファイアウォールの例外があります。クライアントは接続し、3 つのデータを連続して送信し、ソケットを閉じます。私はこれを速すぎますか?

ありがとう。

4

2 に答える 2

2

まあ、これは長続きする質問ではありませんでした。

クライアント側のソケットを閉じるのが速すぎたようです。制限を追加した後、エラーが発生しなくなりました。

ありがとう!

于 2013-03-09T01:36:49.570 に答える
0

この問題の通常の理由は、ピアによって既に閉じられている接続への書き込みです。つまり、アプリケーション プロトコル エラー、決して読み取られることのないデータの書き込みです。

于 2013-03-09T09:25:49.290 に答える