Ver Mensaje Individual
  #5  
Antiguo 22-07-2010
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Reputación: 16
fide_uci Va por buen camino
Lightbulb Desconectar clientes de la Indy

Bueno, pues puedes acceder a la lista de Hilos del TCPServer y desconectarlos a todos manualmente. Ten en cuenta que estoy utilizando Indy 10 y que aqui ya no existe los PeerTrhead sino que son los AContext, que son lo mismo pero con algunas modificaciones. Asi que quisas tengas que adaptar este codigo si usas Indy 9. Te recomiendo que actualices a la version 10 que esta mucho mas comoda y facil de utilizar y que ademas tiene muchos nuevos componentes como los SSL que son muy utiles.

Código Delphi [-]
private
   procedure DesconectarClientes();
...
implementation

procedure TForm1.DesconectarClientes ();
var
  vList: TList;
  vCount: Integer;
  vDatos: PClient;
begin

  try
    vList := TCPServer.Contexts.LockList;
    
    for vCount := 0 to vList.Count -1 do
      begin
        (* Prueba a ver cual de estos metodos te sirve para desconectar *)
        TIdContext(vList.Items[vCount]).Connection.Socket.Close;
        TIdContext(vList.Items[vCount]).Connection.Disconnect;
        TIdContext(vList.Items[vCount]).Connection.Disconnect(True);
        TIdContext(vList.Items[vCount]).Connection.DisconnectNotifyPeer;
      end;  
  finally
    TCPServer.Contexts.UnlockList;
  end;
end;
Espero que te sea de ayuda esta codigo y cualquier cosa puedes preguntar que aqui estamos para ayudarte gg !
Responder Con Cita