私は3つの質問があります:
多くの接続によってIdTCPServerを破壊することは可能ですか?私は自分のアプリケーションをテストしようとしましたが、複数の接続がある場合は非常にうまく機能しますが(数日でも)、接続数が増えるとアプリケーションがアクセス違反になります。私は、データを絶えず送信する50のクライアントをシミュレートするアプリケーションを作成しました(sleep(200)のみ)。そして、この状況では、IdTCPServerは例外を出しますか?私のアプリケーションは、TidNotifyクラスとTIdSyncクラスを使用して、onExecuteイベントとmodyfiesデータベーステーブルによってクライアントから情報を取得します。クロスコネクションスレッドを保護すると思いますか?クライアントへの情報の送信はTTimerによって行われます(これは今だけです。他のスレッドに変更します)。この状況で、特別な保護またはそのようなもので十分ですか?
type PClient = ^TClient; TClient = record Activity_time:TDateTime; AContext: TIdContext; end; ... list := server.Contexts.LockList; try for i := 0 to list.Count - 1 do with TIdContext(list[i]) do begin if SecondsBetween(now(), PClient(data)^.activity_time) > 6 then begin Connection.IOHandler.Close; Continue; end; try Connection.IOHandler.writeln('E:'); Except Connection.IOHandler.Close; end; end; finally server.Contexts.UnlockList; end;
2.サーバーがビジー状態のときに接続を拒否する簡単な方法はありますか(データベースは複雑ではないと思います(100行、1つの接続で1行のみが変更されます)が、サーバーの安定性を維持する方法はありますか?
3.この質問が何度も繰り返されていることは知っていますが、満足のいく答えが見つかりませんでした:メッセージ例外を回避するためにアプリケーションを保護する方法:「接続が正常に閉じられました」および「接続がピアによってリセットされました」?
すべてのアドバイスをありがとう