Pregunta

Estoy intentando (con mucha ayuda de esta comunidad) reunir mi primera aplicación de cliente/servidor.

Estoy usando Indy 10 y Delphi XE2, pero sospecho que mi problema no recae en ellos, sino más bien con cómo funcionan los SOOCHET (Wizardy y Black Arts, si me preguntas).

Debido a que a menudo llego a los puntos de descanso de excepciones y paso a través de mi código antes de presionar a Alt+F2 para detenerse, mis próximas ejecuciones a menudo presionan la excepción "ya conectada" y eventualmente obtengo "demasiadas conexiones".

¿Cómo puedo ordenar esto?

(Además, ¿alguien tiene una demostración que usa el intento ... excepto, ratehr que intentar ... finalmente como en las demostraciones de Indy?)

¿Fue útil?

Solución

"ya conectado" ocurre en el lado del cliente cuando llama Connect() tiempo Connected() todavía devuelve verdadero. Que generalmente ocurre si se desconecta y deja datos no leídos en el IOHandler.InputBuffer. Intenta limpiar el InputBuffer antes de volver a conectar. Esto se encuentra comúnmente, por lo que una actualización de futuro cercano a Indy puede abordar ese problema.

"Demasiadas conexiones" significa que establece el servidor MaxConnections propiedad a un valor positivo distinto de cero y que muchos clientes simultáneos ya están conectados al servidor cuando un nuevo cliente intenta conectarse. Si no cree que está haciendo tantas conexiones simultáneas, entonces generalmente significa que no está administrando las conexiones correctamente en su código de servidor, por lo que los clientes desconectados se limpian correctamente. La causa más común de eso es poner manejadores de excepción en su código que atrapan y tragan las excepciones internas de Indy a sí misma. Si atrapa excepciones, asegúrese de volver a criar cualquiera que se deriva de EIdException y deje que el servidor los maneje internamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top