D6服务端ServerSocket,客户端ClientSocket,客户端连接服务端后,ActiveConnect显示1,但客户断开后,服务知道断开了,可是Ac..依然显示1,怎么回事?注:只有一个客户

解决方案 »

  1.   

    你是否在ServerSocket的ClientDisconnect事件里面判断的?在这个事件里好象判断是有这个问题。不过你另外写个方法检测就可以知道其实ServerSocket1.Socket.ActiveConnections已经=0了
    procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
    StatusBar1.Panels[0].Text := IntToStr(ServerSocket1.Socket.ActiveConnections);
    //这里还是显示1
    end;-------
    //这里单独检测
    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
      StatusBar1.Panels[0].Text := IntToStr(ServerSocket1.Socket.ActiveConnections);
      //这里已经显示为0了
    end;
      

  2.   

    OnClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
    这个事件在触发时还没断开连接,这个事件是在客户端请求断开连接但还没断开时触发的,在此事件执行之后才真正断开,所以ActiveConnections不等于0;