Protocolo TCP
Se trata de un conjunto de comandos que nos permiten programar Protocolos TCP/IP como administrar los servicios TCP/IP que programemos.
Las funciones que lo componen pueden agruparse en comandos de protocolos y comandos de gestión de protocolos.
Los comandos de protocolos son comandos que usaremos para programar los intercomunicadores (sub objetos) de un objeto protocolo TCP/IP y son:
Protocolo TCP: enviar fichero Protocolo
Protocolo TCP: enviar entero 16 bits
Protocolo TCP: enviar entero 32 bits
Protocolo TCP: enviar entero 64 bits
Protocolo TCP: recibir fichero Protocolo
TCP: recibir hasta carácter de marca
Protocolo TCP: recibir entero 16 bits
Protocolo TCP: recibir entero 32 bits
Protocolo TCP: recibir entero 64 bits
Estos comandos solamente pueden ser usados en los intercomunicadores de un objeto Protocolo TCP/IP.
Los comandos de gestión de protocolos son comandos que nos permiten gestionar los protocolos TCP y que podrán ser usados en cualquier procesos o función, pero no en los intercomunicadores de un objeto Protocolo TCP/IP. Son:
Protocolo TCP: ¿Está iniciado el servicio?
Protocolo TCP: ejecutar función cliente
Protocolo TCP: iniciar servicio
Protocolo TCP: terminar servicio
Protocolo TCP: terminar todos los servicios
Protocolo TCP: ¿Está iniciado el servicio?
Comando de instrucción del grupo Protocolo TCP que comprueba si está iniciado el servicio del protocolo TCP/IP especificado en sus parámetros.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Parámetros
Identificador del protocolo TCP/IP
Objeto protocolo TCP/IP declarado en el proyecto actual o en un proyecto heredado cuyo servicio se desea saber si está iniciado o no.
Identificador de variable local booleana de retorno de Ok
Identificador de variable local array de puertos (Opcional)
Variable de array local del proceso de tipo numérico o alfabético donde se retornará el puerto o puertos donde el servicio haya sido iniciado.
Funcionalidad
Comprueba si está iniciado el servicio del protocolo TCP/IP declarado en sus parámetros en la máquina donde el proceso sea ejecutado, pudiendo conocer además, el puerto o los puertos en el que se encuentra iniciado.
Ejemplo
Comprobamos si está iniciado el servicio ENV_REC_FICHERO
Protocolo TCP: ejecutar función cliente
Comando de instrucción de proceso que ejecuta el sub-objeto cliente definido en un objetoProtocolo TCP/IP creado en el proyecto actual o en un proyecto heredado.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Parámetros
Identificador del protocolo TCP
En este parámetro se seleccionará un objeto protocolo TCP/IP declarado en el proyecto o en un proyecto heredado, cuya función cliente desea ejecutarse.
Fórmula de dominio o IP del servidor
Expresión de tipo fórmula con el nombre de dominio o dirección IP del servidor con el que queremos establecer la conexión TCP/IP. Puede ser un dato constante o variable. Para facilitar su introducción podemos hacer uso del asistente para edición de fórmulas.
Si queremos hacer uso de un número de puerto distinto al configurado en el objeto protocolo TCP/IP, incluiremos el nuevo número de puerto en este parámetro, precedido por dos puntos (:). Ejemplo:
“midominio.com” (hará uso del puerto establecido en las propiedades del objeto protocolo TCP). “midominio.com:5001” (hará uso del puerto 5001, independientemente del número de puerto que tengamos configurado en el objeto protocolo TCP/IP).
Para que sea funcional el cambio de puerto, es necesario que el objeto protocolo TCP/IP tenga configurado un puerto por defecto. Si no, aunque especifiquemos un puerto en este parámetro, no hará uso de él.
Fórmula de los parámetros (opcional)
Si hemos definido parámetros en el sub-objeto función.
Identificador de variable local booleana de retorno de ok (opcional): en este parámetro podremos declarar una variable local.
Funcionalidad
Este comando ejecuta el sub-objeto función. Es decir, ejecuta la parte cliente de un protocolo TCP/IP declarado en el proyecto.
Ejemplo
Ejecutamos la función cliente del protocolo ENV_RC_FICHERO para el envío del fichero seleccionado.
Protocolo TCP: enviar buffer
Comando de instrucción del grupo Protocolo TCP envía un buffer de datos.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Parámetros
Fórmula de dato
Expresión de tipo fórmula con el buffer a enviar. Para su especificación podremos hacer uso del asistente para edición de fórmulas.
Fórmula de número de bytes
Expresión de tipo fórmula con el número de bytes del buffer a enviar. Para su especificación podremos hacer uso del asistente para edición de fórmulas.
Fórmula de tiempo en espera en segundos
Expresión de tipo fórmula con el tiempo, en segundos, que se va a esperar para enviar el buffer. Para su especificación podremos hacer uso del asistente para edición de fórmulas.
Funcionalidad
En un proceso de cliente o de servidor de un protocolo TCP/IP este comando de instrucción envía un buffer de datos. Este comando de instrucción solamente puede ser usado en los procesos (intercomunicadores) de un objeto Protocolo TCP/IP.
Comentarios
El comando de instrucción de proceso que permite recibir el buffer enviado es Protocolo TCP: recibir buffer.
Ejemplo
Enviar la variable BUFFER esperando 10 segundos para obtener respuesta.
Protocolo TCP: enviar byte
Comando de instrucción de proceso que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite enviar un byte de datos.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Parámetros
Fórmula valor del byte (0-255)
Expresión fórmula donde se especificará el valor numérico del byte a enviar, que será uno comprendido entre 0 y 255. Para facilitar su especificación podremos hacer uso del asistente para la edición de fórmulas.
Fórmula de tiempo de espera en segundos
Expresión fórmula donde se especificará el tiempo, en segundos, que se va a estar a la escucha para enviar el byte.
Funcionalidad
Comando de instrucción que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite enviar un byte de datos.
Comentarios
Para obtener el valor numérico del byte a enviar podemos utilizar la función de fórmulas stringToNumber.
El comando de instrucción que permite leer un byte es Protocolo TCP: recibir byte.
Ejemplo
Enviamos el carácter recibido en la variable CADENA como parámetro en el intercomunicador cliente al servidor.
Protocolo TCP: enviar entero 16 bits
Comando de instrucción de proceso que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite enviar un entero de 16 bits.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Parámetros
Fórmula de valor del entero 16 bits (0-65535)
Expresión fórmula donde se especificará el entero de 16 bits a enviar, que deberá ser un número comprendido entre 0 y 65535.
Orden de bytes
Permite especificar el tipo de ordenación de los bytes a enviar, que podrá ser o Little Endian o Big Endian.
Fórmula de tiempo de espera en segundos
Expresión fórmula donde se especificará el tiempo, en segundos, que se esperará para enviar el entero de 16 bits.
Funcionalidad
Comando de instrucción que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite enviar un entero de 16 bits.
Comentarios
Al tratarse de un entero de 16 bits deberá ser uno comprendido entre 0 y 65535.
Dependiendo del sistema operativo en que se trabaje, hay que considerar el orden de los bytes en los tipos de datos numéricos que utilizan varios bytes. Los dos formatos existentes son Little Endian y Big Endian.
Little Endian significa que el byte de menor peso se almacena en la dirección más baja de memoria y el byte de mayor peso en la más alta.
Los procesadores Intel (usados en la mayoría de los ordenadores personales) y los DEC Alpha RISC son Little Endian.
En el formato Big Endian el byte de mayor peso se almacena en la dirección más baja de memoria y el byte de menor peso en la dirección más alta.
La mayoría de los sistemas UNIX, el protocolo de Internet TCP, los procesadores Motorola 680×0 (y, por lo tanto, los Macintosh), Hewlett-Packard PA-RISC, y Sun SuperSPARC son “Big Endian”. El MIPS de Silicon Graphics y el procesador IBM/Motorola PowerPC son capaces de entender ambos sistemas, por lo que se dice que son “Big Endian”.
El comando de instrucción que permite recibir un entero de 16 bits es Protocolo TCP: recibir entero 16 bits.
Ejemplo
Enviamos el entero de 16 bits recibido en la variable ENTERO como parámetro en el intercomunicador cliente al servidor, usando el orden de bytes LitteEndian con un tiempo de espera de 10 segundos.
Protocolo TCP: enviar entero 32 bits
Comando de instrucción del grupo Protocolo TCP permite enviar un entero de 32 bits.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Parámetros
Fórmula de valor del entero 32 bits (0-4294967295)
Expresión fórmula donde se especificará el entero de 32 bits a enviar, que deberá ser un número comprendido entre 0 y 4294967295.
Orden de bytes
Permite especificar el tipo de ordenación de los bytes a enviar, que podrá ser o Little Endian o Big Endian.
Fórmula de tiempo de espera en segundos
Expresión fórmula donde se especificará el tiempo, en segundos, que se esperará para enviar el entero de 32 bits.
Funcionalidad
Comando de instrucción que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite enviar un entero de 32 bits.
Comentarios
Al tratarse de un entero de 32 bits deberá ser uno comprendido entre 0 y 4294967295.
Dependiendo del sistema operativo en que se trabaje, hay que considerar el orden de los bytes en los tipos de datos numéricos que utilizan varios bytes. Los dos formatos existentes son Little Endian y Big Endian.
Little Endian significa que el byte de menor peso se almacena en la dirección más baja de memoria y el byte de mayor peso en la más alta.
Los procesadores Intel (usados en la mayoría de los ordenadores personales) y los DEC Alpha RISC son Little Endian.
En el formato Big Endian el byte de mayor peso se almacena en la dirección más baja de memoria y el byte de menor peso en la dirección más alta.
La mayoría de los sistemas UNIX, el protocolo de Internet TCP, los procesadores Motorola 680×0 (y, por lo tanto, los Macintosh), Hewlett-Packard PA-RISC, y Sun SuperSPARC son “Big Endian”. El MIPS de Silicon Graphics y el procesador IBM/Motorola PowerPC son capaces de entender ambos sistemas, por lo que se dice que son “bi-endian”.
El comando de instrucción que permite recibir un entero de 32 bits es Protocolo TCP: recibir entero 32 bits.
Ejemplo
Enviamos el entero de 32 bits recibido en la variable ENTERO como parámetro en el intercomunicador cliente al servidor, usando el orden de bytes BigEndian con un tiempo de espera de 10 segundos.
Protocolo TCP: enviar entero 64 bits
Comando de instrucción de proceso que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite enviar un entero de 64 bits.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Parámetros
Fórmula de valor del entero 64 bits (0-18446744073709551616)
Expresión fórmula donde se especificará el entero de 32 bits a enviar, que deberá ser un número comprendido entre 0 y 18446744073709551616.
Orden de bytes
Permite especificar el tipo de ordenación de los bytes a enviar, que podrá ser o Little Endian o Big Endian.
Fórmula de tiempo de espera en segundos
Expresión fórmula donde se especificará el tiempo, en segundos, que se esperará para enviar el entero de 64 bits.
Funcionalidad
Comando de instrucción que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite enviar un entero de 64 bits.
Comentarios
Al tratarse de un entero de 64 bits deberá ser uno comprendido entre 0 y 18446744073709551616.
Dependiendo del sistema operativo en que se trabaje, hay que considerar el orden de los bytes en los tipos de datos numéricos que utilizan varios bytes. Los dos formatos existentes son Little Endian y Big Endian.
Little Endian significa que el byte de menor peso se almacena en la dirección más baja de memoria y el byte de mayor peso en la más alta.
Los procesadores Intel (usados en la mayoría de los ordenadores personales) y los DEC Alpha RISC son Little Endian.
En el formato Big Endian el byte de mayor peso se almacena en la dirección más baja de memoria y el byte de menor peso en la dirección más alta.
La mayoría de los sistemas UNIX, el protocolo de Internet TCP, los procesadores Motorola 680×0 (y, por lo tanto, los Macintosh), Hewlett-Packard PA-RISC, y Sun SuperSPARC son “Big Endian”. El MIPS de Silicon Graphics y el procesador IBM/Motorola PowerPC son capaces de entender ambos sistemas, por lo que se dice que son “bi-endian”.
El comando de instrucción que permite recibir un entero de 64 bits es TCP: recibir entero 64 bits.
Ejemplo
Enviamos el entero de 64 bits recibido en la variable ENTERO como parámetro en el intercomunicador cliente al servidor, usando el orden de bytes BigEndian con un tiempo de espera de 10 segundos.
Protocolo TCP: enviar fichero
Comando de instrucción de proceso que en un proceso intercomunicador de un objeto Protocolo TCP/IP envía un fichero.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Parámetros
Fórmula de senda
Expresión de tipo fórmula con la senda del fichero a enviar. Para su especificación podremos hacer uso del asistente para edición de fórmulas.
Fórmula de tiempo en espera en segundos
Expresión de tipo fórmula con el tiempo, en segundos, que se va a esperar para enviar el fichero. Para su especificación podremos hacer uso del asistente para edición de fórmulas.
Funcionalidad
En un proceso de cliente o de servidor de un protocolo TCP/IP este comando de instrucción permite enviar un fichero. Solamente puede ser usado en un proceso (intercomunicador) de un objeto Protocolo TCP/IP.
Comentarios
Se trata un comando propio de Velneo y no de un comando estándar TCP, por lo que solamente podrá ser usado para el intercambio de ficheros entre aplicaciones de Velneo.
El comando de instrucción de proceso que permite recibir el fichero enviado es Protocolo TCP: recibir fichero.
El protocolo TCP/IP para enviar y recibir fichero se compone de la siguiente forma:
Buffer con tamaño del fichero en 8 bytes unsigned (64 bits). Big Indian (importante: tipo Unix, no Windows).
Buffer con fichero.
Ejemplo
Enviamos el fichero recibido en la variable FICHERO como parámetro en el intercomunicador cliente al servidor, enviando previamente el nombre del fichero y la longitud en BYTES del mismo.
Protocolo TCP: enviar línea
Comando de instrucción del grupo Protocolo TCP.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Parámetros
Fórmula de dato
Expresión de tipo fórmula con los bytes de datos a enviar. Para su especificación podremos hacer uso del asistente para edición de fórmulas.
Fórmula de tiempo en espera en segundos
Expresión de tipo fórmula con el tiempo, en segundos, que se va a esperar para enviar la línea. Para su especificación podremos hacer uso del asistente para edición de fórmulas.
Funcionalidad
En un proceso de cliente o de servidor de un protocolo TCP/IP este comando de instrucción permite enviar una línea de datos. Este comando de instrucción solamente podrá ser usado en procesos intercomunicadores de un objeto Protocolo TCP/IP.
Comentarios
El carácter de fin de línea será añadido (\n) automáticamente por la función al final de la cadena enviada.
El comando de instrucción de proceso que permite recibir la línea enviada es Protocolo TCP: recibir línea.
Ejemplo
Enviamos la línea recibida en la variable LINEA como parámetro en el intercomunicador cliente al servidor, usando con un tiempo de espera de 10 segundos.
Protocolo TCP: iniciar servicio
Comando de instrucción de proceso que inicia un servicio TCP.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Parámetros
Identificador del protocolo TCP/IP
En este parámetro tendremos que seleccionar un objeto Protocolo TCP/IP cuyo servicio queremos iniciar.
Identificador de la variable local booleana de retorno de ok (Opcional)
Funcionalidad
Este comando de instrucción de proceso permite iniciar un servicio TCP.
Comentarios
El objeto protocolo TCP/IP tendrá que tener programado el proceso de servidor en el sub objeto Intercomunicador.
Cuando la máquina donde se haya iniciado el servicio reciba una petición un cliente TCP, se ejecutará automáticamente el proceso programado en el intercomunicador de servidor.
El servicio será iniciado en la máquina donde sea ejecutado el proceso. Es decir, si iniciamos el servicio en un proceso ejecutado en primer o 2º plano desde una sesión de Velneo vClient, el servicio será iniciado en esa estación cliente. Si el proceso lo ejecutamos en tercer plano, entonces el servicio será ejecutado en el servidor. Esto tendremos que tenerlo en cuenta a la hora de ejecutar el proceso que termine el servicio.
Recordar que el puerto de escucha para ese servicio se define en el propio objeto Protocolo TCP/IP.
El servicio permanecerá activo hasta que, o bien se dispare un proceso que ejecute el comando de instrucción Protocolo TCP: terminar servicio.
El arranque de objetos protocolo en 2º y 3º plano es asíncrono, ya que es el hilo principal el que arranca el servicio.
Por tanto, este comando de instrucción de proceso devolverá siempre 1, aunque no pueda arrancar el servicio, debido a que el puerto esté ocupado o no se encuentre en el rango permitido.
Ejemplo
Comprobamos en una función el estado actual de un servicio y, en caso de que no se encuentre activo lo iniciamos retornando en la variable OK_INICIADO el valor del estado.
Protocolo TCP: recibir buffer
Comando de instrucción de proceso que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite recibir un buffer de datos.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Parámetros
Identificador de la variable local alfabética de retorno
Variable local del objeto, de tipo alfabético, en la que se retornará el buffer recibido.
Fórmula de número de bytes
Expresión de tipo fórmula con el tamaño en bytes del buffer a recibir. Para su especificación podremos hacer uso del asistente para edición de fórmulas.
Fórmula de tiempo en espera en segundos
Expresión de tipo fórmula con el tiempo, en segundos, que se va a esperar para recibir el buffer. Para su especificación podremos hacer uso del asistente para edición de fórmulas.
Funcionalidad
En un proceso de un intercomunicador de un objeto Protocolo TCP/IP este comando de instrucción permite recibir un buffer de datos. Solamente podrá ser usado en un proceso (intercomunicador) de cliente o de servidor de un objeto Protocolo TCP/IP.
Comentarios
Dado que este comando de instrucción requiere conocer el número de bytes a recibir, en el intercomunicador se debería haber recibido antes información sobre el tamaño del buffer a recibir. Es decir, la secuencia del protocolo debería ser:
(Cliente) – Envío de información sobre nº de bytes (Servidor) – Recepción de información sobre nº de bytes (Cliente) – Envío de buffer (Servidor) – Recepción de buffer
El comando de instrucción de proceso que permite enviar el buffer es Protocolo TCP: enviar buffer.
Ejemplo
En el proceso servidor del intercomunicador recibimos el tamaño y buffer que recibirá el servidor. Posteriormente se da de alta un registro en la tabla de mensajes dando valores a los campos especificados en el ejemplo.
Protocolo TCP: recibir byte
Comando de instrucción de proceso que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite recibir un byte de datos.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Parámetros
Identificador de variable local numérica de retorno
Variable local del objeto de tipo numérico donde se retornará el byte recibido.
Fórmula de tiempo de espera en segundos
Expresión fórmula donde se especificará el tiempo, en segundos, que se va a estar a la escucha para recibir el byte.
Funcionalidad
Comando de instrucción que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite recibir un byte de datos.
Comentarios
El byte recibido será un número comprendido entre 0 y 255. Si deseamos obtener el carácter ASCII correspondiente a ese byte podremos usar la función de fórmulas getAsciiChar.
El comando de instrucción que envía un byte es Protocolo TCP: enviar byte.
Ejemplo
En el proceso servidor del intercomunicador recibimos un byte con un tiempo de espera de 5 segundos. Posteriormente se da de alta un registro en la tabla de mensajes dando valores a los campos especificados en el ejemplo agregando la ficha a una cesta usada para mostrar los mensajes de la tabla MENSAJES.
Protocolo TCP: recibir entero 16 bits
Comando de instrucción de proceso que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite recibir un entero de 16 bits.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Parámetros
Identificador de la variable local numérica de retorno
Variable local del objeto, de tipo numérico, donde se retornará el entero de 16 bits recibido.
Orden de bytes
Permite especificar el tipo de ordenación de los bytes a recibir, que podrá ser o Little Endian o Big Endian.
Fórmula de tiempo de espera en segundos
Expresión fórmula donde se especificará el tiempo, en segundos, que se va a estar a la escucha para recibir el entero de 16 bits.
Funcionalidad
Comando de instrucción que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite recibir un entero de 16 bits.
Comentarios
Al tratarse de un entero de 16 bits deberá ser uno comprendido entre 0 y 65535.
Dependiendo del sistema operativo en que se trabaje, hay que considerar el orden de los bytes en los tipos de datos numéricos que utilizan varios bytes. Los dos formatos existentes son Little Endian y Big Endian.
Little Endian significa que el byte de menor peso se almacena en la dirección más baja de memoria y el byte de mayor peso en la más alta.
Los procesadores Intel (usados en la mayoría de los ordenadores personales) y los DEC Alpha RISC son Little Endian.
En el formato Big Endian el byte de mayor peso se almacena en la dirección más baja de memoria y el byte de menor peso en la dirección más alta.
La mayoría de los sistemas UNIX, el protocolo de Internet TCP, los procesadores Motorola 680×0 (y, por lo tanto, los Macintosh), Hewlett-Packard PA-RISC, y Sun SuperSPARC son “Big Endian”. El MIPS de Silicon Graphics y el procesador IBM/Motorola PowerPC son capaces de entender ambos sistemas, por lo que se dice que son “bi-endian”.
El comando de instrucción que permite enviar un entero de 16 bits es Protocolo TCP: enviar entero 16 bits.
Ejemplo
Recibimos un entero de 16 bits en la variable ENTERO como parámetro en el intercomunicador servidor, usando el orden de bytes LitteEndian con un tiempo de espera de 10 segundos.
Protocolo TCP: recibir entero 32 bits
Comando de instrucción de proceso que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite recibir un entero de 32 bits.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Parámetros
Identificador de la variable local numérica de retorno
Variable local del objeto, de tipo numérico, donde se retornará el entero de 32 bits recibido.
Orden de bytes
Permite especificar el tipo de ordenación de los bytes a recibir, que podrá ser o Little Endian o Big Endian.
Fórmula de tiempo de espera en segundos
Expresión fórmula donde se especificará el tiempo, en segundos, que se va a estar a la escucha para recibir el entero de 32 bits.
Funcionalidad
Comando de instrucción que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite recibir un entero de 32 bits.
Comentarios
Al tratarse de un entero de 16 bits deberá ser uno comprendido entre 0 y 4294967295.
Dependiendo del sistema operativo en que se trabaje, hay que considerar el orden de los bytes en los tipos de datos numéricos que utilizan varios bytes. Los dos formatos existentes son Little Endian y Big Endian.
Little Endian significa que el byte de menor peso se almacena en la dirección más baja de memoria y el byte de mayor peso en la más alta.
Los procesadores Intel (usados en la mayoría de los ordenadores personales) y los DEC Alpha RISC son Little Endian.
En el formato Big Endian el byte de mayor peso se almacena en la dirección más baja de memoria y el byte de menor peso en la dirección más alta.
La mayoría de los sistemas UNIX, el protocolo de Internet TCP, los procesadores Motorola 680×0 (y, por lo tanto, los Macintosh), Hewlett-Packard PA-RISC, y Sun SuperSPARC son “Big Endian”. El MIPS de Silicon Graphics y el procesador IBM/Motorola PowerPC son capaces de entender ambos sistemas, por lo que se dice que son “bi-endian”.
El comando de instrucción que permite enviar un entero de 32 bits es Protocolo TCP: enviar entero 32 bits.
Ejemplo
Recibimos un entero de 32 bits en la variable ENTERO como parámetro en el intercomunicador servidor, usando el orden de bytes BigEndian con un tiempo de espera de 10 segundos.
Protocolo TCP: recibir entero 64 bits
Comando de instrucción del grupo Protocolo TCP permite recibir un entero de 64 bits.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Parámetros
Identificador de la variable local numérica de retorno
Variable local del objeto, de tipo numérico, donde se retornará el entero de 64 bits recibido.
Orden de bytes
Permite especificar el tipo de ordenación de los bytes a recibir, que podrá ser o Little Endian o Big Endian.
Fórmula de tiempo de espera en segundos
Expresión fórmula donde se especificará el tiempo, en segundos, que se va a estar a la escucha para recibir el entero de 64 bits.
Funcionalidad
Comando de instrucción que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite recibir un entero de 64 bits.
Comentarios
Al tratarse de un entero de 16 bits deberá ser uno comprendido entre 0 y 18446744073709551616.
Dependiendo del sistema operativo en que se trabaje, hay que considerar el orden de los bytes en los tipos de datos numéricos que utilizan varios bytes. Los dos formatos existentes son Little Endian y Big Endian.
Little Endian significa que el byte de menor peso se almacena en la dirección más baja de memoria y el byte de mayor peso en la más alta.
Los procesadores Intel (usados en la mayoría de los ordenadores personales) y los DEC Alpha RISC son Little Endian.
En el formato Big Endian el byte de mayor peso se almacena en la dirección más baja de memoria y el byte de menor peso en la dirección más alta.
La mayoría de los sistemas UNIX, el protocolo de Internet TCP, los procesadores Motorola 680×0 (y, por lo tanto, los Macintosh), Hewlett-Packard PA-RISC, y Sun SuperSPARC son “Big Endian”. El MIPS de Silicon Graphics y el procesador IBM/Motorola PowerPC son capaces de entender ambos sistemas, por lo que se dice que son “bi-endian”.
El comando de instrucción que permite enviar un entero de 64 bits es Protocolo TCP: enviar entero 64 bits.
Ejemplo
Recibimos un entero de 64 bits en la variable ENTERO como parámetro en el intercomunicador servidor, usando el orden de bytes BigEndian con un tiempo de espera de 10 segundos.
Protocolo TCP: recibir fichero
Comando de instrucción de proceso que en un proceso intercomunicador de un objeto Protocolo TCP/IP recibe un fichero.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Parámetros
Fórmula de senda
Expresión de tipo fórmula con la senda completa (senda, nombre y extensión) del fichero a guardar. Para su especificación podremos hacer uso del asistente para edición de fórmulas.
Fórmula de tiempo en espera en segundos
Expresión de tipo fórmula con el tiempo, en segundos, que se va a esperar para recibir el fichero. Para su especificación podremos hacer uso del asistente para edición de fórmulas.
Funcionalidad
En un proceso de cliente o de servidor de un de un protocolo TCP/IP este comando de instrucción recibe un fichero de otro servidor o cliente TCP. Solamente puede ser usado en procesos (intercomunicadores) de un objeto objeto protocolo TCP/IP.
Comentarios
Antes de recibir el fichero es necesario conocer tanto el nombre del fichero a recibir como su tamaño en bytes, por tanto, en el protocolo se debería obtener ambos datos antes de la recepción del fichero. La secuencia, por ejemplo, podría ser:
Cliente
Servidor
Envío de nombre y extensión del fichero.
Recepción de nombre y extensión del fichero.
Envío del tamaño en bytes del fichero.
Recepción del tamaño en bytes del fichero.
Envío del fichero.
Recepción del fichero.
El comando de instrucción de proceso que permite enviar un fichero es Protocolo TCP: enviar fichero.
Se trata un comando propio de Velneo y no de un comando estándar TCP, pero si se quiere enviar a un servicio TCP de Velneo Vt ficheros desde otras plataformas, debemos tener en cuenta que Velneo espera el tamaño del fichero en formato big indian y 64 bits seguido del fichero en binario. A continuación ponemos un ejemplo para hacerlo desde Python y un enlace de cómo hacerlo desde PHP:
`#!/usr/bin/python
-- coding: UTF-8 --`
`import socket import sys from struct import *
Connect to the host
s.connect( ( host, port ) )
Fichero leído en modo binario
sendfile = open(‘logo.png’, ‘rb’)
Leemos el fichero
data = sendfile.read()
Convertimos el tamaño del fichero a hex con ordenación de bytes tipo Big Indian y 64 bits
En php se puede hacer como se indica aquí: http://www.php.net/manual/en/function.pack.php
En los comentarios de esa página se indica como hacerlo para 64 bits (en dos trozos de 32)
a=pack(“>Q”, 44797)
Enviamos el tamaño seguido del fichero
s.sendall(a+data) s.close()`
Ejemplo
Guardamos un fichero enviado por el intercomunicador cliente conociendo previamente el nombre del fichero que va a recibir el servidor. Recibimos el tamaño del fichero y posteriormente recibimos el fichero.
Protocolo TCP: recibir hasta carácter marca
Comando de instrucción de proceso que en un proceso intercomunicador de un objeto Protocolo TCP/IP recibe bytes de datos hasta una marca determinada.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Parámetros
Identificador de la variable local alfabética de retorno
En este parámetro especificaremos la variable local donde se retornarán los bytes recibidos.
Fórmula de carácter marca
Expresión fórmula donde se especificará cuál es el carácter de marca. Para facilitar su especificación podremos hacer uso del asistente para la creación de fórmulas. En este parámetro se podrá especificar más de un carácter. El carácter o los caracteres definidos en el mismo serán excluidos de la trama recibida.
Fórmula de tiempo de espera en segundos
Expresión fórmula donde se especificará el tiempo, en segundos, que se va a estar a la escucha para recibir los datos.
Funcionalidad
Este comando permite, en un proceso de un intercomunicador de un objeto Protocolo TCP/IP recibir bytes de datos hasta una marca determinada.
Ejemplo
Recibimos en el lado del servidor caracteres hasta llegar a un carácter que nos marca el final de la recepción.
Protocolo TCP: recibir línea
Comando de instrucción de proceso que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite recibir bytes de datos seguidos de un carácter de fin de línea (\n).
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Parámetros
Identificador de la variable local alfabética de retorno
Variable local del objeto donde se retornarán los bytes de datos recibidos.
Fórmula de tiempo en espera en segundos
Expresión de tipo fórmula con el tiempo, en segundos, que se va a esperar para recibir la línea. Para su especificación podremos hacer uso del asistente para edición de fórmulas.
Funcionalidad
En un proceso de cliente o de servidor de un protocolo TCP/IP este comando de instrucción permite recibir una línea de datos (conjunto de bytes seguido de un carácter \n) . Este comando de instrucción solamente podrá ser usado en procesos (intercomunicadores) de un objeto Protocolo TCP/IP.
Comentarios
El comando de instrucción de proceso que envía una línea es Protocolo TCP: enviar línea.
Ejemplo
Recibimos en el lado del servidor una línea de caracteres en la variable local LINEA dándola de alta en la tabla de mensajes.
Protocolo TCP: rerminar servicio
Comando de instrucción de proceso que termina un servicio TCP.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Parámetros
Identificador del protocolo TCP/IP
En este parámetro tendremos que seleccionar un objeto Protocolo TCP/IP cuyo servicio queremos terminar.
Identificador de la variable local booleana de retorno de ok (Opcional)
Variable local al proceso de tipo booleano donde se retornará si el servicio ha podido ser terminado (1) o no (0).
Funcionalidad
Este comando de instrucción de proceso permite terminar un servicio TCP.
Un servicio es iniciado con el comando de instrucción de proceso Protocolo TCP: iniciar servicio.
Ejemplo
Terminamos el servicio especificando en la variable local OK_DETENIDO el resultado.
Protocolo TCP: terminar todos los servicios
Comando de instrucción de proceso que termina todos los servicios TCP iniciados en la máquina donde se ejecute el proceso.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
Parámetros
No tiene.
Funcionalidad
Este comando de instrucción de proceso detiene todos los servicios TCP iniciados en la sesión en curso de la instancia de aplicación que está siendo ejecutada.
Un servicio es iniciado con el comando de instrucción de proceso Protocolo TCP: iniciar servicio.
Ejemplo
Terminamos todos los servicios que podamos tener activos.
Última actualización