Suponiendo que ya leyeron mis entradas anteriores, en este punto ya debemos conocer las propiedades básicas del control Winsock, y algunas propiedades de manejo de errores.
En esta entrada, aprenderemos cómo programar validaciones en nuestras aplicaciones, para hacerlas como bien decimos en este mundo de la programación de software, aplicaciones a prueba de tontos.
Bien, empecemos:
Validaciones de envío de mensajes y conexión
Para tener un programa muy bien
desarrollado y que no cause errores cuando las terminales destino se caigan,
debe hacerse una buena validación en el envío de mensajes a terminales, esto
es, si no se encuentra activa la terminal, no enviarle ningún tipo de mensajes
hasta que esta esté activa. Esto se consigue con la propiedad “state”, tomamos algunos valores de esta
propiedad para validar que la máquina esté activa.
Los valores que nos interesan de
esta propiedad son los siguientes
Valor Constante Estado
0 sckClosed Cerrado
7 sckConnected Conectado
Ejemplo de envío de mensaje erroneo:
Winsock1.senddata “Hola como estás”
Este envío de mensaje funciona
muy bien cuando la terminal destino está conectada, pero si se desconecta la
terminal y mandamos un mensaje a ella, nuestra aplicación se traba. Entonces
debemos utilizar la siguiente estructura para que nuestra aplicación no sufra
ningún error de este tipo
Ejemplo de envío de mensaje
correcto:
If
winsock1.state=7 then
Winsock1.senddata “Hola como estás”
endif
Ahora procedemos a validar la
conexión, esto causa error si tenemos un botón de conectar y pulsamos conectar
y la aplicación se conecta con el servidor, muy bien hasta ahora, pero que pasa
si de casualidad se nos ocurre nuevamente pulsar el botón conectar?, nuestra
aplicación sufre un error. Ahora a corregirlo.
Ejemplo de conexión erronea:
Winsock1.connect “192.168.1.6”, 10112
Funciona pero falla con la
explicación que te di anteriormente
Ejemplo de conexión correcta:
If
winsock1.state<>7 then
Winsock1.close
Winsock1.connect “192.168.1.6”, 10112
endif
No hay comentarios.:
Publicar un comentario