Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Como evitar el Asynchronous socket error? (https://www.clubdelphi.com/foros/showthread.php?t=68161)

mcs 28-05-2010 08:47:44

Como evitar el Asynchronous socket error?
 
Buenos días,

Tengo una aplicación que se comunica con un dispositivo a través de sockets. Para la comunicación uso el TClientSocket. En general funciona todo correctamente, a excepción de cuando hay algún problema de comunicación (dirección IP incorrecta, dispositivo apagado, timeout, etc).

Todos estos problemas los puedo capturar. Cuando ocurren, aviso al usuario mediante un mensaje, y procedo a cerrar la conexión del TClientSocket, con el método Close. Aparentemente se cierra el socket, pero unos segundos después, empiezan a aparecer (cada 5 o 10 segundos) ventanas con el mensaje "Asynchronous socket error 10060", error de Windows que indica que el socket ha hecho un timeout.

Por tanto, no sé si es que realmente no se cierra el socket cuando se lo pido, o que lo enviado queda en alguna cola del Windows cómo pendiente. Y claro, es muy molesto que cuando fallan las comunicaciones salgan errores de Windows (y si no se cierra la aplicación, no se puede volver a comunicar).

Y mi pregunta es: que puedo hacer para evitar estos errores? El TClientSocket lo tengo configurado en "nonBlocking". Quizá mejor cambiar y usar algun componente de las Indy? Continuar con el TClientSocket pero usandolo en modo bloqueante?

Cualquier ayuda/recomendación será bienvenida!

Saludos,

Marc

mcs 28-05-2010 09:45:58

Ya lo he solucionado.

En el evento OnError del TClientSocket, si se pone la variable ErrorCode a 0 no se muestra ninguna ventana de error.

En fin, imagino que si la ayuda del Delphi 2010 fuera un poco decente, no habría estado tanto tiempo con el maldito error...


La franja horaria es GMT +2. Ahora son las 16:57:56.

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