Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-05-2012
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
Se congela al querer desconectar los clientes de FTP

Hola, muy buenos días:

Hace mucho que no entraba al club para hacer preguntas, es que donde trabajo se han enfocado un poco más a C#, pero mi pasión es delphi, estoy haciendo en este momenbto una aplicación para traspasar archivos de una pc a otra y lo más fácil que se me ha ocurrido es hacerlo mediante FTP así que me dí a la tarea de hacer el servidor y el cliente apoyándome en los ejemplos de los componentes indy y todo iba bien hasta que se me ocurrió implementar un log en el FTPServer utilizando el IdServerInterceptLogEvent. Mi problema es el siguiente: Ejecuto mi servidor FTP y lo activo, lo pruebo utilizando una ventana del explorador de windows para conectarme, ya implementé los eventos para navegar por el server y crear carpetas, al cerrar mi servidor no me preocupaba por cerrar las conexiones de los clientes pero desde que implementé el log con IdServerInterceptLogEvent tuve que hacerlo porque sino se queda congelada mi aplicación al querer cerrarla, para cerrar las conexiones de los clientes hago lo siguiente:

Código Delphi [-]
    with FTPServer.Contexts.LockList do
      for i := 0 to Count - 1 do
        if TIdServerContext(Items[i]).Connection.Connected then
          TIdServerContext(Items[i]).Connection.Disconnect;                     // En este punto se congela mi aplicación
    FTPServer.Contexts.UnlockList;
    FTPServer.StopListening;
    FTPServer.Active := false;
    btnListen.Caption := 'Conectar'

Y mi aplicación sigue congelándose a veces.

He ejecutado mi aplicación sin utilizar IdServerInterceptLogEvent y funciona muy bien, de todas las veces que he ejecutado solo una vez se quedó congelada, pero si uso IdServerInterceptLogEvent aprox. tres de cada cinco veces que la ejecuto se congela, ahora si cierro el formulario haciendo clic en el botón cerrar del formulario (esto no desconecta a los clientes) si me muestra errores "access violation at address 0xXXXXXX" lo que me hace sospechar que se hace referencia a un objeto nulo, me imagino que tiene algo que ver con los hilos de los clientes activos y que IdServerInterceptLogEvent trata de accesar a ellos sin éxito.

He buscado más ejemplos y ayuda en internet y la verdad que no encontré nada que me ayude. Uso Delphi XE2 con los indy 10.5.8.0

¿estoy cerrando bien las conexiones de mis clientes?
¿no sirve el componente IdServerInterceptLogEvent?
¿debo crear mi log usando otro método?
¿debo cambiar de carrera?
¿quién fue el autor intelectual del asesinato de Kennedy?
¿existe el chupacabras?

Bueno me conformo con que me ayuden a solucionar mi problema con los componentes indy.

De antemano muchas gracias por sus respuestas y voy a andar dándoles lata por acá .
__________________
Herr Heins Faust
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Aplicación que se congela rhino0nt OOP 1 18-05-2011 00:37:27
Error INET/inet_error: read errno = 10054 congela aplicacion procom2010 Firebird e Interbase 6 10-03-2011 14:20:14
SQL Server + Delphi se congela al ejecutar un Procedimeinto Almacenado subzero Varios 3 29-09-2010 01:57:15
Desconectar parlantes Caral Varios 33 14-07-2008 04:39:08
Se congela Aplicación JamesBond_Mx Conexión con bases de datos 0 03-06-2004 15:34:48


La franja horaria es GMT +2. Ahora son las 23:35:22.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi