4D Internet Commands v16

Rutinas de bajo nivel, Presentación

Inicio

 
4D Internet Commands v16
Rutinas de bajo nivel, Presentación

Rutinas de bajo nivel, Presentación  


 

 

El protocolo TCP/IP (Transmission Control Protocol/Internet Protocol) es el protocolo principal utilizado para enviar y recibir datos a través de Internet. Los comandos Internet de bajo nivel de 4D permiten establecer sesiones TCP para enviar y recibir paquetes TCP a través de estas sesiones.

Hay dos maneras de establecer una conexión TCP. La primera consiste en ejecutar el comando TCP_Open. Esto abrirá una conexión con el dominio y puerto especificados. TCP_Open permite el uso del protocolo SSL (Secured Socket Layer), que permite una conexión segura. La segunda forma consiste en utilizar el comando TCP_Listen. Este comando abre una conexión con el dominio y el puerto especificados, y escucha las conexiones entrantes. La mejor manera de determinar si una conexión se ha establecido es comprobar el estado de la sesión con el comando TCP_State al finalizar el comando TCP_Listen. Un código de estado se devolverá, indicando el estado actual de la sesión. Desde aquí puede enviar y/o recibir paquetes TCP como lo haría con una conexión establecida con TCP_Open.

En todos los casos, toda conexión TCP abierta debe cerrarse posteriormente con ayuda del comando TCP_Close.

Los comandos TCP/IP de bajo nivel requieren conocimientos avanzados de los protocolos de comunicación. Los desarrolladores que utilizan estas rutinas deben tener una comprensión completa de todo protocolo que intenten implementar. Información sobre los diferentes números de puertos asignados a TCP/IP, protocolos de comunicación, requisitos de direccionamiento, etc. se pueden encontrar en las RFC.

4D Internet commands permite pasar directamente una referencia de  conexión POP3, IMAP, o FTP a los comandos TCP de bajo nivel y viceversa.
De hecho, por un lado, los protocolos están en constante evolución lo que lleva a la creación de nuevos comandos; por otra parte, algunos paquetes de software hacen su propia interpretación de los RFCs, volviendo las implementaciones estándar inutilizables. Usando los comandos de bajo nivel TCP, los desarrolladores pueden crear las funciones de alto nivel que necesitan (en lugar de utilizar funciones existentes o para compensar una función que no existe).
Esto aumenta significativamente la compatibilidad y las posibilidades de desarrollo ya que los desarrolladores pueden crear sus propios comandos de alto nivel sin tener que reescribir todos los comandos necesarios para el uso de un protocolo.

En este ejemplo, el comando IMAP_Capability se reemplaza por una función equivalente desarrollada utilizando los comandos TCP_IP.

 $ErrorNum:=IMAP_Login(vHost;vUserName;vUserPassword;vImap_ID)
 If($ErrorNum=0)
    C_TEXT(vCapability)
    $ErrorNum:=IMAP_Capability(vImap_ID;vCapability)
    ... ` Comando IMAP utilizando el parámetro vImap_ID
 End if
 $ErrorNum:=IMAP_Logout(vImap_ID)
  • Este método puede remplazarse por:
 $ErrorNum:=IMAP_Login(vHost;vUserName;vUserPassword;vImap_ID)
 If($ErrorNum =0)
    C_TEXT(vCapability)
  ` Método TCP utilizando el valor del parámetro vImap_ID:
    $ErrorNum:=My_IMAP_Capability(vImap_ID)
    ... ` Comandos IMAP utilizando el parámetro vImap_ID
 End if
 $ErrorNum:=IMAP_Logout(vImap_ID)
  • Este es el código de la función My_IMAP_Capability:
 C_LONGINT($1;$vErrorNum;$0)
 C_TEXT($vSentText;$vReceivedText;vCapability)
 C_TEXT($2)
 
 $vImap_Id:=$1
 $vCmd_Id:="A001" ` Este ID de comando debe ser único (cf. RFC 2060)
 $MyvtRequestCmd:="CAPABILITY"
 $vSentText;:=$vCmd_Id+""+$MyvtRequestCmd+Character(13)+Character(10)
 $vReceivedText:=""
 $vErrorNum:=TCP_Send($vImap_Id;$vSentText)
 If($vErrorNum=0)
    $vErrorNum:=TCP_Receive($vImap_Id;$vReceivedText)
    Case of
       :($vErrorNum#0) `Reception error
          vCapability:=""
       :(Position($vCmd_Id+" OK ";$vReceivedText)#0)
  ` Ejecución exitosa del comando
          vCapability:=$vReceivedText
  ` En este ejemplo, no procesamos la cadena recibida
       :(Position($vCmd_Id+" BAD ";$vReceivedText)#0)
  ` Falla de la ejecución del comando (error de sintaxis
  ` o comando desconocido)
          vCapability:=""
          $vErrorNum:=10096
    End case
 End if
 $0:=$vErrorNum

 
PROPIEDADES 

Producto: 4D Internet Commands
Tema: IC TCP/IP

 
HISTORIA 

 
ARTICLE USAGE

4D Internet Commands ( 4D Internet Commands v16)