2012-01-11 17 views
0

私はこのコミュニティの助けを借りて、最初のクライアント/サーバーアプリケーションをまとめようとしています。開発時に接続が多すぎます

私はIndy 10とDelphi Xe2を使用していますが、私の問題はそれらの問題ではないと思われます。

私が頻繁に停止するのAlt + F2キーを押す前に、私のコードを例外とステップのブレークポイントをヒットしているので、私の次の実行は、多くの場合、「すでに接続」し、最終的に私は「あまりにも多くの接続」を取得し、例外を打ちます。私はこれを整理するにはどうすればよい

+1

あなたの問題を再現する最小のコードを提供して、人々があなたをより良く助けることができますか? – menjaraz

答えて

5

「すでに接続」(また、最終的にはインディデモのように?...試みるよりもratehr、以外...誰でも試す使用するデモを持っている)を呼び出すクライアント側で発生しましたConnect()となり、Connected()はまだtrueを返します。これは通常、接続を切断して未読データをIOHandler.InputBufferに残した場合に発生します。再接続する前にInputBufferをクリアしてください。これは一般的に遭遇しているため、Indyの近い将来のアップデートでその問題が解決される可能性があります。

"接続が多すぎる"とは、サーバーのMaxConnectionsプロパティを0以外の正の値に設定し、新しいクライアントが接続しようとすると同時に多数のクライアントがサーバーに接続していることを意味します。多くの同時接続を行っていると思わない場合は、通常、サーバーコードで接続を正しく管理していないため、切断されたクライアントが正しくクリーンアップされます。その最も一般的な原因は、Indyの内部例外をキャッチして取り込む例外ハンドラをコード内に置くことです。例外をキャッチする場合は、EIdExceptionから派生したものを再発生させ、サーバーで内部的に処理させるようにしてください。

+1

+1ありがとう、レミー!!入力バッファをクリアする際のgreta tip ANd、はい、私は最大値をゼロ以外の値に設定しました。私はブレークポイントやエクスプレッションを打つとデバッグセッションを終了し、デバッグセッションを終了してしまいました。 – Mawg

関連する問題