![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
¿Estás conectando con sockets?
¿Qué componentes estás utilizando para la conexión? ¿TidTCPClient, TidTCPServer?
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#2
|
|||
|
|||
|
Cita:
Efectivamente, estoy utilizando TidTCPClient y TidTCPServer. |
|
#3
|
||||
|
||||
|
Revisa los eventos de estos componentes. Poseen unos llamados OnConnected y OnDisconnected.
Deberían servirte para lo que necesitas.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#4
|
|||
|
|||
|
Cita:
¿o me equivoco? No tengo idea si la herrmienta TIdEcho y TIdECHOServer me puede servir para esto |
|
#5
|
||||
|
||||
|
Honestamente no se puede hacer lo que dices. Para notificar desde la una que la otra esta desconectada, pues tienen que tener conexion!
---- Lo que se hace es que se define un "timeout" y un metodo de "ping" que corre dentro de la ventana del timeout. Si el ping falla, se asume que esta desconectado. Algunos componentes tienen esa opcion automatica. La otra, es que debes mejorar el codigo que hace los envios. No deberia "colgar" la app (usas un thread aparte, como debe ser?). SIN EMBARGO La UNICA forma confiable de saber si hay o no conexión es HACIENDO LA CONEXION. UNICA FORMA. Todo lo demas son simples aproximaciones.
__________________
El malabarista. |
|
#6
|
||||
|
||||
|
Cita:
Cita:
A no ser que te refieras a saber si las aplicacione están funcionando (no conectadas entre si). porque una vez que se conectan desde ambos extremos tienen los eventos de conexión/desconexión. ![]() ![]() ![]()
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#7
|
|||
|
|||
|
Cita:
Es lo que estoy haciendo hasta ahora. Ya había probado modificando el tiempo de ConnectTimeout pero no funciona la conexión, probé con un valor de 1, 10, 50, 100, 500, 800, 1000, etc pero no funciona. Poniendo un tiempo diferente a 0 me tira siempre un el error "Connect timed out". Me interesa lo del thread a parte ¿Como puedo hacer para usar un thread a parte? Cita:
Lo que hago ahora es que en el evento OnCreate del servidor envíe un dato avisando a las terminales que se conectó, el problema está en que cuando manda el dato a las terminales que no están conectadas se queda un rato esperando la respuesta. Eso hace que la aplicación tarde en iniciar y queda a medio abrir. Solucioné gran parte del problema determinando al iniciar el programa cuales son las terminales conectadas y guardando en una tabla esa información, entonces no le envío datos a las terminales que figuran como desconectadas. Cuando una de las terminales que estaban desconectadas se conecta modifico esa info en la tabla. Entonces solo tardaría para determinar las terminales conectadas y desconectadas cuando inicio el programa, en el resto del programa se va enterando en el proceso de ejecución cuando se conectan y cuando se desconectan las terminales. Y lo mismo hago con las terminales para saber si el servidor está conectado. |
|
#8
|
||||
|
||||
|
Presta atencion a lo que se te dice:
NO SE PUEDE HACER. Lo que estas pidiendo es un *sin sentido*. Lo unico que se puede hacer es una heuristica. Cita:
Cita:
Debes entender que la conexion va a fallar. Asi que en vez de tratar de encontrar la forma de que "no falle", es reaccionar *correctamente*. Intenta la conexion, pon un timeout corto (o el por defecto) y procede acorde. Recibe cuando los clientes se conecten que ya hay otra vez linea y procede. Si te esta bloqueando la ejecucion es porque no estan usando codigo asincronico o un thread aparte para la comunicacion, Busca en el foro al respecto. Pero principalmente, trata de entender como funcionan las redes para que no des palos de ciego. --- P.D: En estos casos es muy util si haces un diagrama de maquina de estado, y analizas que debes hacer en cada estado, luego lo codificas. Eso resultara en un codigo mas correcto.
__________________
El malabarista. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| ¿ Cómo saber que cliente de correo está instalado por defecto en un PC ? | Aldo | Internet | 5 | 12-06-2013 11:58:15 |
| Como saber si una aplicacion esta instalada | ColdFusion | Varios | 7 | 07-04-2009 02:45:51 |
| Puedo saber si esta Conectada? (InterBase) | marceloalegre | Conexión con bases de datos | 2 | 17-08-2005 21:35:12 |
| Saber si una unidad de Red esta conectada | comba | API de Windows | 2 | 18-04-2005 19:57:02 |
| Como Saber Que Aplicacion Se Esta Ejecutando ??? | TomasCampeon | API de Windows | 1 | 12-08-2004 03:23:26 |
|