Tipo: |
Bloque de funciones |
Disponible desde: |
V1.1.0.0 |
Se comunica con el Servidor DNS especificado para solicitar la resolución de un nombre de dominio en una dirección IPv4.
Este bloque de funciones se utiliza para comunicarse con un Servidor DNS (según RFC1035) para obtener la dirección IPv4 registrada correspondiente al nombre de dominio especificado. Por lo tanto, se abre un socket UDP y se envía una petición DNS al servidor, que se especifica mediante las entradas i_sDnsServerIp y i_uiDnsServerPort. El socket se vuelve a cerrar cuando se recibe una respuesta del servidor o se produce un timeout.
NOTA: El bloque de funciones admite respuestas autoritativas y recursivas proporcionadas por el servidor DNS.
Si el servidor puede resolver el nombre de dominio y la respuesta se ha recibido correctamente, las direcciones IPv4 resueltas y el periodo de vida correspondiente (TTL) están disponibles en la salida q_astDnsAddressInfo. Para limitar el tráfico de red se puede utilizar el valor TTL para almacenar en caché las direcciones resueltas.
NOTA: Actualice la caché de IP según la información proporcionada por TTL.
La comunicación con el Servidor DNS requiere varios ciclos de programa. El estado del bloque de funciones se indica mediante las salidas q_xBusy, q_xError y q_xDone.
Mientras el bloque de funciones se esté ejecutando, la salida q_xBusy se establece como TRUE. La salida q_xDone se establece como TRUE después de que el bloque funciones se haya ejecutado correctamente.
Los mensajes de estado y la información de diagnóstico se proporcionan mediante las salidas q_xError (TRUE si se ha detectado un error), q_etResult y q_etResultMsg.
Para confirmar los errores detectados, deshabilite y vuelva a habilitar el bloque de funciones para poder realizar un nuevo intento de resolver el nombre de dominio.
Entrada |
Tipo de datos |
Descripción |
---|---|---|
i_xEnable |
BOOL |
Activación e inicialización del bloque de funciones. |
i_xExecute |
BOOL |
Tras un flanco ascendente de esta entrada, la petición de DNS se envía al servidor DNS. |
i_sDnsServerIP |
STRING(15) |
Especifica la dirección IP del servidor DNS externo. |
i_uiDnsServerPort |
UINT |
Especifica el puerto del Servidor DNS externo. Si el pin no está asignado, se utiliza el valor predeterminado 53. |
i_sDomainName |
STRING(255) |
El nombre de dominio a resolver.(Sólo se admiten símbolos ASCII). |
Salida |
Tipo de datos |
Descripción |
---|---|---|
q_xActive |
BOOL |
Si el bloque de funciones está activo, esta salida se establece en TRUE. |
q_xReady |
BOOL |
Indica TRUE si el bloque de funciones está preparado para recibir un comando de ejecución. |
q_xBusy |
BOOL |
Si esta salida está configurada en TRUE, la ejecución del bloque de funciones está en curso. |
q_xDone |
BOOL |
Si esta salida está configurada en TRUE, la ejecución se ha completado correctamente. |
q_xError |
BOOL |
Si esta salida se establece en TRUE, se ha detectado un error. Para obtener información detallada, consulte q_etResult y q_etResultMsg. |
q_etResult |
ET_Result |
Proporciona información de diagnóstico y estado en forma de valor numérico. |
q_sResultMsg |
STRING(80) |
Proporciona información adicional de diagnóstico y estado en forma de mensaje de texto. |
q_uiNumberOfIpAddresses |
UINT |
Número de direcciones IP que devuelve el Servidor DNS. |
q_astDnsAddressInfo |
ARRAY [0..GPL.Gc_uiDnsNumberOfIPs-1] OF ST_DnsAddressInfo |
La estructura contiene información sobre el nombre de dominio resuelto y recibido del servidor DNS. |