4D Internet Commands v16

Low Level Routines, Overview

Página Inicial

 
4D Internet Commands v16
Low Level Routines, Overview

Low Level Routines, Overview  


 

 

O protocolo TCP/IP (Transmission Control Protocol/Internet Protocol) é o protocolo principal utilizado para enviar e receber dados através de Internet. Os comandos Internet de nível baixo de 4D permitem estabelecer sessões TCP para enviar e receber pacotes TCP através destas sessões.

Há dois formas de estabelecer uma conexão TCP. A primeira consiste em executar o comando TCP_Open. Isto abrirá uma conexão com o domínio e porta especificados. TCP_Open permite o uso do protocolo SSL (Secured Socket Layer), que permite uma conexão segura. A segunda forma consiste em utilizar o comando TCP_Listen. Este comando abre uma conexão com o domínio e o porto especificados, e escuta as conexões de entrada. A melhor forma de determinar se uma conexão foi estabelecida é comprovar o estado da sessão com o comando TCP_State ao finalizar o comando TCP_Listen. Um código de estado será devolvido, indicando o estado atual da sessão. Desde aqui pode enviar e/ou receber pacotes TCP como seria feito com uma conexão estabelecida com TCP_Open.

Em todos os casos, toda conexão TCP aberta deve ser fechada posteriormente com ajuda do comando TCP_Close.

Os comandos TCP/IP de nível baixo requerem conhecimentos avançados dos protocolos de comunicação. Os desenvolvedores que utilizam estas rotinas devem ter uma compreensão completa de todo protocolo que tentam implementar. Informação sobre os diferentes números de portos atribuídos a TCP/IP, protocolos de comunicação, requisitos de direção, etc. podem ser encontrados nas RFC.

4D Internet commands permite passar diretamente uma referencia de conexão POP3, IMAP, ou FTP aos comandos TCP de nível e vice versa.
Na verdade, por um lado, os protocolos estão em constante evolução, o que leva a criação de novos comandos; por outra parte, alguns pacotes de software fazem sua própria interpretação dos RFCs, voltando as implementações estandarte inutilizáveis. Usando os comandos de baixo nível TCP, os desenvolvedores podem criar as funções de alto nível que necessitam (em lugar de utilizar funções existentes ou para compensar uma função que não existe).
Isto aumenta significativamente a compatibilidade e as possibilidades de desenvolvimento já que os desenvolvedores podem criar seus próprios comandos de alto nível sem ter que reescrever todos os comandos necessários para o uso de um protocolo.

Neste exemplo, o comando IMAP_Capability é substitui por uma função equivalente desenvolvida utilizando os 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 o parâmetro vImap_ID
 End if
 $ErrorNum:=IMAP_Logout(vImap_ID)
  • Este método pode ser substituído por:
 $ErrorNum:=IMAP_Login(vHost;vUserName;vUserPassword;vImap_ID)
 If($ErrorNum =0)
    C_TEXT(vCapability)
  ` Método TCP utilizando o valor do parâmetro vImap_ID:
    $ErrorNum:=My_IMAP_Capability(vImap_ID)
    ... ` Comandos IMAP utilizando o parâmetro vImap_ID
 End if
 $ErrorNum:=IMAP_Logout(vImap_ID)
  • Este é o código da função 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 deve 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)
  ` Execução com sucesso do comando
          vCapability:=$vReceivedText
  ` Neste exemplo, não processamos a cadeia recebida
       :(Position($vCmd_Id+" BAD ";$vReceivedText)#0)
  ` Falha da execução do comando (erro de sintaxes
  ` o comando desconhecido)
          vCapability:=""
          $vErrorNum:=10096
    End case
 End if
 $0:=$vErrorNum

 
PROPRIEDADES 

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

 
HISTÓRIA 

 
ARTICLE USAGE

4D Internet Commands ( 4D Internet Commands v16)