Comment on page
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:
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:
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.
Objeto protocolo TCP/IP declarado en el proyecto actual o en un proyecto heredado cuyo servicio se desea saber si está iniciado o no.
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.
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.
Comprobamos si está iniciado el servicio ENV_REC_FICHERO
Protocolo TCP: ¿Esta iniciado el servicio? ( ENV_REC_FICHERO@ejemplo, OK_INICIADO, PUERTO )
If ( OK_INICIADO )
Mensaje ( "El servicio está a la escucha en el puerto " + PUERTO[0], Información, , )
Else
Mensaje ( "El servicio no está iniciado", Información, , )
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.
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.
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.
Identificador de variable local booleana de retorno de ok (opcional): en este parámetro podremos declarar una variable local.
Este comando ejecuta el sub-objeto función. Es decir, ejecuta la parte cliente de un protocolo TCP/IP declarado en el proyecto.
Ejecutamos la función cliente del protocolo ENV_RC_FICHERO para el envío del fichero seleccionado.
Ventana de selección de fichero ( FICHERO, OK_ACEPTADO, "*.*", "" )
If ( OK_ACEPTADO )
Protocolo TCP: ejecutar función cliente ( ENV_REC_FICHERO@ejemplo, $ENV_REC_FICHERO_IP@ejemplo, FICHERO, OK_CONNECT )
If ( !OK_CONNECT )
Mensaje ( "Conexión fallida", Información, , )
Comando de instrucción del grupo Protocolo TCP envía un buffer de datos.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
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.
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.
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.
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.
El comando de instrucción de proceso que permite recibir el buffer enviado es Protocolo TCP: recibir buffer.
Enviar la variable BUFFER esperando 10 segundos para obtener respuesta.
Rem ( Se envía el buffer )
Protocolo TCP: enviar buffer ( BUFFER, NUM_BYTES, 10 )
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.
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.
Expresión fórmula donde se especificará el tiempo, en segundos, que se va a estar a la escucha para enviar el byte.
Comando de instrucción que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite enviar un byte de datos.
Para obtener el valor numérico del byte a enviar podemos utilizar la función de fórmulas stringToNumber.
Enviamos el carácter recibido en la variable CADENA como parámetro en el intercomunicador cliente al servidor.
Rem ( Proceso de cliente )
Rem ( Se obtiene el código ASCII del carácter recibido )
Set ( BYTE, stringToNumber(getAsciiCharCode(left(CADENA, 1), "ISO-8859-1")) )
Libre
Rem ( El número obtenido es enviado al servidor )
Protocolo TCP: enviar byte ( BYTE, 10 )
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.
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.
Permite especificar el tipo de ordenación de los bytes a enviar, que podrá ser o Little Endian o Big Endian.
Expresión fórmula donde se especificará el tiempo, en segundos, que se esperará para enviar el entero de 16 bits.
Comando de instrucción que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite enviar un entero de 16 bits.
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.
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.
Rem ( Proceso de cliente )
Protocolo TCP: enviar entero 16 bits ( ENTERO, LittleEndian, 10 )
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.
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.
Permite especificar el tipo de ordenación de los bytes a enviar, que podrá ser o Little Endian o Big Endian.
Expresión fórmula donde se especificará el tiempo, en segundos, que se esperará para enviar el entero de 32 bits.
Comando de instrucción que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite enviar un entero de 32 bits.
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.
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.
Rem ( Proceso de cliente )
Protocolo TCP: enviar entero 32 bits ( ENTERO, BigEndian, 10 )
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.
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.
Permite especificar el tipo de ordenación de los bytes a enviar, que podrá ser o Little Endian o Big Endian.
Expresión fórmula donde se especificará el tiempo, en segundos, que se esperará para enviar el entero de 64 bits.
Comando de instrucción que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite enviar un entero de 64 bits.
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”.
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.
Rem ( Proceso de cliente )
Protocolo TCP: enviar entero 64 bits ( ENTERO, BigEndian, 10 )
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.
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.
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.
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.
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.
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.
Rem ( Proceso de cliente )
Rem ( Obtenemos el tamaño del fichero a enviar )
Get atributos del fichero ( FICHERO, FECHA, HORA, BYTES )
Libre
Rem ( Se envía al servidor una línea con el nombre del fichero, un carácter de marca y su longitud )
Protocolo TCP: enviar línea ( getPathFileName(FICHERO) + "|" + BYTES, 10 )
Libre
Rem ( Enviamos el fichero al servidor )
Protocolo TCP: enviar fichero ( FICHERO, 10 )
Comando de instrucción del grupo Protocolo TCP.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
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.
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.
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.
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.
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.
Rem ( Proceso de cliente )
Protocolo TCP: enviar línea ( LINEA, 10 )
Comando de instrucción de proceso que inicia un servicio TCP.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
En este parámetro tendremos que seleccionar un objeto Protocolo TCP/IP cuyo servicio queremos iniciar.
Este comando de instrucción de proceso permite iniciar un servicio TCP.
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.
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.
Rem ( Si el servicio ya se encuentra iniciado no haremos nada, si no lo está lo iniciaremos )
Protocolo TCP: ¿Esta iniciado el servicio? ( ENV_REC_LINEA@ejemplo, OK_INICIADO, )
If ( !OK_INICIADO )
Protocolo TCP: iniciar servicio ( ENV_REC_LINEA@ejemplo, OK_INICIADO )
Libre
Rem ( Retornamos el estado del servicio tcp )
Set dato de retorno ( OK_INICIADO )
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.
Variable local del objeto, de tipo alfabético, en la que se retornará el buffer recibido.
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.
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.
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.
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
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.
Rem ( Proceso de servidor )
Rem ( Recibimos la información sobre el tamaño del buffer )
Protocolo TCP: recibir línea ( TAMAÑO, 10 )
Rem ( Recibimos el buffer )
Protocolo TCP: recibir buffer ( BUFFER, TAMAÑO, 10 )
Crear nueva ficha en memoria ( mensaje, MENSAJES@ejemplo )
Modificar campo ( NAME, "Buffer recibido: " + BUFFER + ". Tamaño = " + TAMAÑO )
Alta de ficha ( mensaje )
Libre
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.
Variable local del objeto de tipo numérico donde se retornará el byte recibido.
Expresión fórmula donde se especificará el tiempo, en segundos, que se va a estar a la escucha para recibir el byte.
Comando de instrucción que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite recibir un byte de datos.
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.
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.
Rem ( Proceso de servidor )
Rem ( Se recibe el byte enviado por el cliente )
Protocolo TCP: recibir byte ( BYTE, 5 )
Rem ( Se genera el registro en la tabla de mensajes )
Crear nueva ficha en memoria ( mensaje, MENSAJES@ejemplo )
Modificar campo ( NAME, "Byte recibido: " + getAsciiChar(BYTE, "ISO-8859-1") )
Alta de ficha ( mensaje )
Cesta: agregar ficha a la cesta ( MENSAJES@Tutor TCP )
Rem ( Invertir el orden de la cesta para que el último mensaje sea el primer registro )
Cesta: procesar ( MENSAJES@Tutor TCP )
Invertir lista
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.
Variable local del objeto, de tipo numérico, donde se retornará el entero de 16 bits recibido.
Permite especificar el tipo de ordenación de los bytes a recibir, que podrá ser o Little Endian o Big Endian.
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.
Comando de instrucción que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite recibir un entero de 16 bits.
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.
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.
Rem ( Proceso de servidor )
Rem ( Recepción del dato enviado por el cliente )
Protocolo TCP: recibir entero 16 bits ( ENTERO, LittleEndian, 10 )
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.
Variable local del objeto, de tipo numérico, donde se retornará el entero de 32 bits recibido.
Permite especificar el tipo de ordenación de los bytes a recibir, que podrá ser o Little Endian o Big Endian.
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.
Comando de instrucción que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite recibir un entero de 32 bits.
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.
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.
Rem ( Proceso de servidor )
Rem ( Recepción del dato enviado por el cliente )
Protocolo TCP: recibir entero 32 bits ( ENTERO, BigEndian, 10 )
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.
Variable local del objeto, de tipo numérico, donde se retornará el entero de 64 bits recibido.
Permite especificar el tipo de ordenación de los bytes a recibir, que podrá ser o Little Endian o Big Endian.
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.
Comando de instrucción que en un proceso intercomunicador de un objeto Protocolo TCP/IP permite recibir un entero de 64 bits.
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.
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.
Rem ( Proceso de servidor )
Rem ( Recepción del dato enviado por el cliente )
Protocolo TCP: recibir entero 64 bits ( ENTERO, BigEndian, 10 )
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.
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.
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.
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.
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 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()`
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.
Rem ( Proceso de servidor )
Rem ( De la línea enviada por el cliente leemos hasta el carácter de marca, para extraer el nombre del fichero )
Protocolo TCP: recibir hasta carácter marca ( FICHERO, "|", 10 )
Rem ( Quitamos el carácter de marca al nombre del fichero )
Set ( FICHERO, left(FICHERO, len(FICHERO)-1) )
Rem ( Recepción del tamaño del fichero (dato que va a continuación del carácter de marca) )
Protocolo TCP: recibir línea ( TAMAÑO, 10 )
Rem ( Recibir el fichero )
Protocolo TCP: recibir fichero ( tempPath() + "/" + FICHERO, 60 )
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.
En este parámetro especificaremos la variable local donde se retornarán los bytes recibidos.
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.
Expresión fórmula donde se especificará el tiempo, en segundos, que se va a estar a la escucha para recibir los datos.
Este comando permite, en un proceso de un intercomunicador de un objeto Protocolo TCP/IP recibir bytes de datos hasta una marca determinada.
Recibimos en el lado del servidor caracteres hasta llegar a un carácter que nos marca el final de la recepción.
Rem ( Proceso de servidor )
Rem ( De la línea enviada por el cliente leemos hasta el carácter de marca, para extraer la cadena )
Protocolo TCP: recibir hasta carácter marca ( TEXTO, "|", 10 )
Rem ( Quitamos el carácter de marca al texto )
Set ( TEXTO, left(TEXTO, len(TEXTO)-1) )
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.
Variable local del objeto donde se retornarán los bytes de datos recibidos.
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.
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.
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.
Rem ( Proceso de servidor )
Protocolo TCP: recibir línea ( LINEA, 10 )
Crear nueva ficha en memoria ( mensaje, MENSAJES@ejemplo )
Modificar campo ( NAME, "Línea recibida: " + LINEA )
Alta de ficha ( mensaje )
Libre
Comando de instrucción de proceso que termina un servicio TCP.
Origen de la instrucción: cualquiera.
Destino del subproceso: ninguno.
En este parámetro tendremos que seleccionar un objeto Protocolo TCP/IP cuyo servicio queremos terminar.
Variable local al proceso de tipo booleano donde se retornará si el servicio ha podido ser terminado (1) o no (0).
Este comando de instrucción de proceso permite terminar un servicio TCP.
Terminamos el servicio especificando en la variable local OK_DETENIDO el resultado.
Protocolo TCP: terminar servicio ( ENV_REC_LINEA@Tutor TCP, OK_DETENIDO )
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.
No tiene.
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.
Terminamos todos los servicios que podamos tener activos.
Protocolo TCP: terminar todos los servicios
Última actualización 6mo ago