4D Internet Commands v16

Routines de bas niveau, Présentation

Accueil

 
4D Internet Commands v16
Routines de bas niveau, Présentation

Routines de bas niveau, Présentation  


 

 

TCP/IP ou Transmission Control Protocol/Internet Protocol est le principal protocole utilisé pour l'envoi de données sur Internet. Les commandes Internet de bas niveau de 4D permettent d'établir des sessions TCP puis d'envoyer et/ou de recevoir des paquets TCP via ces sessions.

Il existe deux manières d'établir une connexion TCP :

  • La première consiste à exécuter la commande TCP_Open. Celle-ci ouvre une connexion avec le domaine et sur le port spécifiés. Elle permet de se connecter à un serveur TCP. La commande TCP_Open permet l'utilisation du protocole SSL (Secured Socket Layer) afin de sécuriser la connexion.
  • La seconde consiste à exécuter la commande TCP_Listen. Celle-ci ouvre une connexion avec le domaine et sur le port spécifiés, et écoute les connexions entrantes. La meilleure façon de déterminer si une connexion a été établie consiste à vérifier l'état de la session avec la commande TCP_State, après l'exécution de TCP_Listen. Un code de statut est alors renvoyé, indiquant l'état courant de la session. A partir de là, vous pouvez envoyer et/ou recevoir des paquets TCP comme vous le feriez lors d'une connexion établie avec TCP_Open.

Dans tous les cas, toute connexion TCP ouverte doit être refermée à l'aide de la commande TCP_Close.

Les commandes TCP/IP de bas niveau nécessitent une connaissance approfondie des protocoles de communication. Pour obtenir des informations complémentaires sur les différents numéros de port affectés à TCP/IP, les protocoles de communication, les impératifs d'adressage, etc., veuillez vous reporter aux RFCs.

Les commandes Internet de 4D permettent de passer directement une référence de connexion POP3, IMAP ou FTP aux commandes TCP de bas niveau et inversement.
En effet, d’une part les protocoles évoluent régulièrement, donnant naissance à de nouvelles commandes ; d’autre part, certains progiciels font leur propre interprétation des RFCs — rendant les implémentations normalisées inutilisables. Avec ce principe, le développeur pourra créer lui-même les fonctions de haut niveau dont il a besoin (à la place de fonctions existantes ou pour palier à l’inexistence d’une fonction) à l’aide des commandes bas niveau TCP.
Cette fonctionnalité accroît significativement l’ouverture et les possibilités de développement puisque les développeurs peuvent créer leurs propres commandes de haut niveau sans devoir réécrire toutes les commandes nécessaires à l’exploitation d’un protocole.

Dans cet exemple, la commande IMAP_Capability est remplacée par une fonction équivalente développée à l’aide des commandes TCP_IP.

 $ErrorNum:=IMAP_Login(vHost;vUserName;vUserPassword;vImap_ID)
 If($ErrorNum=0)
    C_TEXT(vCapability)
    $ErrorNum:=IMAP_Capability(vImap_ID;vCapability)
    ... ` Commandes IMAP utilisant le paramètre vImap_ID
 End if
 $ErrorNum:=IMAP_Logout(vImap_ID)
  • Cette méthode peut être remplacée par :
 $ErrorNum:=IMAP_Login(vHost;vUserName;vUserPassword;vImap_ID)
 If($ErrorNum =0)
    C_TEXT(vCapability)
  ` Méthode TCP utilisant la valeur du paramètre vImap_ID :
    $ErrorNum:=My_IMAP_Capability(vImap_ID)
    ... ` Commandes IMAP utilisant le paramètre vImap_ID
 End if
 $ErrorNum:=IMAP_Logout(vImap_ID)
  • Voici le code de la fonction My_IMAP_Capability :
 C_LONGINT($1;$vErrorNum;$0)
 C_TEXT($vTexteEnvoyé;$vTexteReçu;vCapability)
 C_TEXT($2)
 
 $vImap_Id:=$1
 $vCmd_Id:="A001" ` Cet ID de commande doit être unique (cf. RFC 2060)
 $MyvtRequestCmd:="CAPABILITY"
 $vTexteEnvoyé:=$vCmd_Id+""+$MyvtRequestCmd+Char(13)+Char(10)
 $vTexteReçu:=""
 $vErrorNum:=TCP_Send($vImap_Id;$vTexteEnvoyé)
 If($vErrorNum=0)
    $vErrorNum:=TCP_Receive($vImap_Id;$vTexteReçu)
    Case of
       :($vErrorNum#0) `Erreur de réception
          vCapability:=""
       :(Position($vCmd_Id+" OK ";$vTexteReçu)#0)
  ` Exécution de la commande avec succès
          vCapability:=$vTexteReçu
  ` Dans cet exemple, nous ne traitons pas la chaîne reçue
       :(Position($vCmd_Id+" BAD ";$vTexteReçu)#0)
  ` Echec de l’exécution de la commande (erreur de syntaxe
  ` ou commande inconnue)
          vCapability:=""
          $vErrorNum:=10096
    End case
 End if
 $0:=$vErrorNum

 
PROPRIÉTÉS 

Produit : 4D Internet Commands
Thème : IC TCP/IP

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

4D Internet Commands ( 4D Internet Commands v16)