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 02-01-2013
jars jars is offline
Miembro
 
Registrado: mar 2004
Posts: 279
Poder: 21
jars Va por buen camino
Sockets: no recibo el read despues del connect

Hola amigos, Feliz año para todos.
Hace ya algunos meses que estoy con este problema y no puedo encontrar el motivo.
Tengo un programa servidor usando TServerSocket (Delphi 7), a este servidor acceden varios puestos con TClientSocket.
Despues de un par de dias en funcionamiento, los clientes empiezan a no poder conectarse, mirando el log que genera el servidor, puedo ver que se recive el evento de conexion y detras deberia recibirse el evento Read del socket pero nunca llega y mientras tanto los clientes que ya estan conectados siguen funcionando sin problemas haciendo consultas (read) pero los nuevos intentos de conexion no se producen hasta que se reinicia el servidor.
Si alguien tiene alguna idea de que puede provocar que no se reciba el evento Read del socket me seria de gran ayuda.
Gracias
Responder Con Cita
  #2  
Antiguo 04-01-2013
jars jars is offline
Miembro
 
Registrado: mar 2004
Posts: 279
Poder: 21
jars Va por buen camino
TJvTimer no libera el thread

Hola amigos.
En un programa que actua como servidor tcp usando TServerSocket con Delphi 7 lo que hago es lo siguiente.
Cuando alguien se conecta al puerto se dispara el evento OnConnect del socket, alli creo una instancia de una clase derivada de TJvTimer a la que le asigno el socket que se acaba de conectar y si al cabo de 1 segundo no recibo en el evento read del socket la firma del cliente se dispara el evento OnTimer y hace un close del socket y el free de la clase.
Viene funcionando varios dias pero en un momento que puede ser despues de 1 semana o algunas horas, ningun cliente se puede conectar y mirando el taskmanager se puede ver que se empiezan a incrementar las hebras del programa hasta que termina reventando. El MadException me tira una chirrera de este bloque:

thread $1fe70 (TJvTimerThread): <priority:2>
7c82860c ntdll.dll KiFastSystemCallRet
7c827d27 ntdll.dll NtWaitForSingleObject
77e31d18 kernel32.dll WaitForSingleObjectEx
77e31c88 kernel32.dll WaitForSingleObject
0044e7b4 acdsrv.exe Classes TThread.WaitFor
0044e3ed acdsrv.exe Classes TThread.Destroy
005d495a acdsrv.exe JvTimer TJvTimerThread.Destroy
004046f0 acdsrv.exe System TObject.Free
005d4ba6 acdsrv.exe JvTimer TJvTimer.Destroy
004046f0 acdsrv.exe System TObject.Free
006496b6 acdsrv.exe Main 1183 TNewSocket.TimerEvent
005d4dd6 acdsrv.exe JvTimer TJvTimer.Timer
005d4a4c acdsrv.exe JvTimer TJvTimerThread.Execute
0042ad06 acdsrv.exe madExcept HookedTThreadExecute
0044e27c acdsrv.exe Classes ThreadProc
004055dc acdsrv.exe System ThreadWrapper
0042ac9b acdsrv.exe madExcept ThreadExceptFrame
>> created by main thread ($1f91c) at:
005d48b9 acdsrv.exe JvTimer TJvTimerThread.Create

Se puede ver que no se estan liberando los threads.
No tengo idea de cual es el disparador pero justo cuando no se pueden conectar es que se ve que empiezan acrecer los threads.
Puede ser que por algun motivo se esten perdiendo mensajes de la cola de mensajes?
Alguien tiene alguna idea.
Los sockets son non blocking y pasa tanto en windows Server 2003 como 2008.

Gracias.
Responder Con Cita
  #3  
Antiguo 15-01-2013
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
El componente TJvThreadTimer tiene la propiedad KeepAlive que hace que no se liberen los threads..
__________________
¿Microsoft? No, gracias..
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
Microsoft libera ASP .NET MVC AzidRain Noticias 3 10-04-2009 19:06:52
Form no libera de memoria Paulao Varios 1 03-03-2009 17:24:48
Red Hat libera RHN y nace spacewalk poliburro Noticias 0 03-07-2008 20:42:52
Thread bendito thread...se me pierde la ventana Seba.F1 API de Windows 5 02-02-2006 00:16:30
No libera la MEMORIA pruz Varios 1 27-04-2004 21:30:33


La franja horaria es GMT +2. Ahora son las 14:38:44.


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