DICT
# DICT

El DICTionary Network Protocol (DICT) es una transacción TCP basada en petición/respuesta que permite a un cliente acceder a definiciones de diccionario, por medio de bases de datos de lenguajes naturales.

## Introducción

El Protocolo DICT fue creado por el DICT Development Group, y está descrito en el RFC 2229 (Request For Comments). Su meta es sobrepasar el protocolo Webster y permitir a los clientes acceder a más diccionarios al mismo tiempo. Habitualmente escucha en el puerto 2628.

## Tokens Utilizados

Las Órdenes y las Respuestas están compuestos por caracteres del UCS ISO 10646 utilizando la codificación UTF-8 RFC 2044. Más concretamente, usando las convenciones gramaticales de RFC 822:

(Extraído del RFC 2229)

## Órdenes

La forma de ejecutar las órdenes es la siguiente:

* Se utiliza una palabra orden, seguida de cero o más parámetros.
* Las órdenes con parámetros deben separar los parámetros entre sí en la propia orden mediante espacios o caracteres TAB.
* Las líneas de órdenes deben estar completas con todos los parámetros requeridos, y solamente puede haber una orden en cada línea.
* Cada línea de órdenes debe terminar con CRLF.

La gramática para las órdenes es la siguiente:

* No hay diferenciación entre mayúsculas y minúsculas.
* Las líneas de órdenes no pueden exceder los 1024 caracteres, incluyendo espacios, separadores, caracteres de puntuación y el CRLF.

## Respuestas

Hay 2 tipos de respuesta a las órdenes anteriores: de Estado, y de Texto.

* Estado:

Las respuestas de estado indica la réplica del servidor al último comando recibido del cliente. Las líneas de respuesta de estado comienzan con 3 elementos de código alfanumérico, el cual es suficiente para distinguir todas las respuestas. El primer dígito de la respuesta indica el éxito, fracaso o proceso del anterior comando (basado generalmente en RFC 640,RFC 821).

El siguiente dígito en el código indica la categoría de la respuesta:

La respuesta esperada por cada orden está detallada en la propia especificación de la orden. Algunas repsuestas de estado pueden contener parámetros como números o cadenas de caracteres

* Texto:

Antes que el texto, se envía una línea de respuesta de estado, usando un código 1yz, para indicar que el texto vendrá a continuación. El texto se envía como una serie de sucesivas líneas de texto, cada una terminada por CRLF. Para indicar el final del texto, se envía una línea con el código decimal 46 o ("."). Después de una respuesta de texto, se envía otra respuesta de estado de código 2yz. Las líneas siguen sin poder exceder los 1024 caracteres, contando espacios, separadores, etc. como se apuntó anteriormente.

## Ejemplo de un Cliente DICT

Buscando la palabra widget.

## Más información

Consultando el RFC 2229 (inglés).

