11

このような状況で、どのように回復すればよいでしょうか?

サーバーがクラッシュしたため、接続が異常終了しました。ほとんどすべてを呼び出すと、「ピアによる接続リセット」例外が発生します。例外ブロック内の TIdTCPClient オブジェクトで Disconnect を呼び出すことで修正したようですが、同じメッセージで 1 つの最終的な例外が発生します (これは 2 番目の try-except ブロックでキャッチしました)。

これは Indy10 と Delphi XE2 の場合です。

   try
      if not EcomSocket.Connected then EcomSocket.Connect();
    except
      on e: Exception do begin
        try
          EcomSocket.Disconnect();
        except
          MessageDlg('Connectivity to the server has been lost.', mtError, [mbOK], 0);
        end;
      end;
    end;
4

1 に答える 1

11

これを試して:

try 
  if not EcomSocket.Connected then EcomSocket.Connect(); 
except 
  try 
    EcomSocket.Disconnect(False); 
  except 
  end; 
  if EcomSocket.IOHandler <> nil then EcomSocket.IOHandler.InputBuffer.Clear; 
  MessageDlg('Connectivity to the server has been lost.', mtError, [mbOK], 0); 
end; 
于 2012-05-09T20:14:50.567 に答える