当客户端因网络异常而强制关闭连接时,服务端的TIdTCPServer会报Socket Error # 10054,Connection peer Closed.错误,请问各位怎么捕捉处理这个错误呢?

解决方案 »

  1.   

    procedure TSocketClient.ClientSocketError(Sender: TObject;
      Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
      var ErrorCode: Integer);
    begin
      Case ErrorCode of
         10053:
           begin
             ErrorCode:=0;
           end;
         10054:
           begin
             ErrorCode:=0;
           end;
         10060:
           begin
             ErrorCode:=0;
           end
         else
           ErrorCode:=0;
      end;end;
      

  2.   

    我用的是Indy的组件,不是Delphi默认的
      

  3.   

    在窗体中加一个ApplicationEvents控件,在它的OnException 事件中加一行注释,就可以屏蔽掉这个异常!
      

  4.   

    另一个方法
    1.使用完就Disconnect,就没有信息弹出.
                try 
                    IdTCPClient1.Connect; try 
                      try 
                         // Do your communications here 
                      finally IdTCPClient1.Disconnect; end; 
                    except 
                      on E: EIdException do begin 
                         ShowMessage('An network error occurred during communication: ' 
                          + E.Message); 
                      end; 
                      on E: Exception do begin 
                         ShowMessage('An unknown error occurred during communication: ' 
                          + E.Message); 
                      end; 
                    end; 
                 except 
                    on E: EIdException do begin 
                      ShowMessage('An network error occurred while trying to connect: ' 
                       + E.Message); 
                    end; 
                    on E: Exception do begin 
                      ShowMessage('An unknown error occurred while trying to connect: ' 
                       + E.Message); 
                    end; 
                 end;