我假设不断的请求Open一个Server连接,这个Server是不存在的
那么,时间长了就会报
Windows socket error: 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。 (10055), on API 'connect'
这个错。如何避免这个错的出现,使得Client可以继续尝试Open?

解决方案 »

  1.   

    procedure TTcpTrans.ClientSocketError(Sender: TObject;  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;  var ErrorCode: Integer);
    begin
        ErrorCode:=0;
        Socket.Close;
        m_ConnectStatus:=csError;
    end;
      

  2.   

    楼上估计没理解我的意思
    我提到的错误是通过
            try
                    ClientSocket1.Close;
                    ClientSocket1.Open;
                    inc(i);
                    Label1.Caption := Inttostr(i);
            except
                    on e:exception do
                    begin
                            edit1.Text := e.Message;
                    end;
            end;
    补捉到的,而不是ErrorCode中体现的
      

  3.   

    1. 使用二楼的代码来捕捉Socket的错误, 而不应该用楼主的try...except...end2. 不要不断地请求Open一个Server连接, 而应该在前一次请求失败之后再一次请求
      

  4.   

    "请求失败"也就是出现ClientSocketError事件。如果你的Client端想在断开连接之后还要尝试与Server连接的话,"请求失败"还应包括ClientSocketDisconnect事件。
      

  5.   

    在ClientSocketError事件里面添加  Socket.Close;  或许能避免你所说的情况!!