Windows socket error: 远程主机强迫关闭了一个现有的连接.  10054 On API 'recv' 的异常名是什么啊? (E is ESocketConnectionError) or (E is ESocketError) 都不对 有谁能告诉我是什么不? 

解决方案 »

  1.   

    你可以这样看看到底是什么样的错误
    try
      这里写上你的代码
    except on e:Exception do
    showmessage(e.Message);
    end;
      

  2.   

    是这个 scktsrvr服务关闭了..这里的代码无法去写啊!!!
    try 
      这里写上你的代码 
    except on e:Exception do 
    showmessage(e.Message); 
    end; 
      

  3.   

    异常名是ESocketError,从TSocketConnection所在窗体当中拦截THREAD_EXCEPTION.也可以通过Application.OnMessage当中过滤.
      

  4.   

    通过Application.OnMessage当中过滤.
    怎么做能说清楚吗?
      

  5.   

    procedure TForm1.OnMessage(var Msg: TMsg; var Handled: Boolean);
    begin
      if msg.message = THREAD_EXCEPTION then begin
        Handled := true;
        ShowMessage( Exception(msg.lParam).Message);
      end;
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Application.OnMessage := OnMessage;
    end;这个处理能够解决一部分问题,但并不是所有的,有一些由于SocketConnection在处理过程当中另一个函数使用GetMessage取消息,而抛出异常,Application.OnMessage无法拦截(想拦截就需要修改TSocketConnection).