TCP_Listen

4D - Documentation   Français   English   German   Japanese   Commandes Internet de 4D, Sommaire   Commandes Internet de 4D, Index   Retour   Précédent   Suivant

version 6.8.1 (Modifiée)


TCP_Listen (clientDistant; portLocal; portDistant; timeOut; tcp_ID) Entier

ParamètreTypeDescription
clientDistantAlphaNom ou adresse IP du client
Adresse IP de la machine connectée (si une variable
contenant une chaîne vide est passée)
portLocalEntierNuméro de port local,
0 = Utiliser un port local vacant
Numéro du port local utilisé (si 0 passé)
portDistantEntierNuméro du port à écouter
timeOutEntierNombre de secondes à attendre avant timeout,
0 = Pas de timeout
tcp_IDEntier longRéférence de la session TCP ouverte
RésultatEntierCode d'erreur

Description

La commande TCP_Listen attend une connexion de la machine désignée par clientDistant depuis le port portDistant.

Cette commande ne rend pas la main à la méthode d'appel de 4D tant que la connexion n'a pas été ouverte ou que la période de timeOut ne s'est pas écoulée. L'exécution de TCP_Listen peut donc provoquer temporairement le blocage de la base. Toutefois, cette commande est particulièrement adaptée au multi-process : elle partage le temps CPU avec les autres process 4D en cours d'exécution.

Il est donc conseillé d'exécuter TCP_Listen au sein d'un process 4D particulier (en particulier si aucun timeOut n'est spécifié).

Le paramètre clientDistant contient le nom ou l'adresse IP du serveur duquel vous attendez une connexion :

Si vous passez une chaîne vide, la commande accepte toute connexion entrante en provenance de toute machine.

Si vous passez une variable contenant une chaîne vide, la commande retournera dans le paramètre l'adresse IP de la machine connectée à l'issue de son exécution.

Note : Sous Windows, le paramètre clientDistant n'acceptera pas l'adresse IP d'une machine distante ; dans ce cas, l'erreur -10049 "Specified address is not available from the local machine" sera générée. Par conséquent, si vous devez filtrer une adresse IP, il est préférable d'utiliser une variable contenant une chaîne vide.

Le paramètre portLocal contient le numéro de port de la machine locale à utiliser pour la communication. Si vous passez 0 (zéro), la commande utilisera un port vacant et retournera son numéro dans ce paramètre.

portDistant contient le numéro du port du serveur depuis lequel écouter la connexion.

Note : Après un appel à TCP_Listen (ou TCP_Open), portDistant peut retourner une valeur négative si la valeur transmise à ce paramètre est supérieure à 32767. Cela ne perturbe pas la connexion. Toutefois, pour éviter cette situation, vous pouvez utiliser une variable intermédiaire :

   $v_ portDistant:=v_ portDistant
   $err:=TCP_Listen (v_ AdrIPServeurDistant;0;$v_ portDistant;30;v_ SessionID)  

Le paramètre timeOut spécifie le nombre maximum de secondes pendant lequel la commande attendra une connexion entrante. Si vous passez 0 (zéro), la commande attendra indéfiniment la connexion (pas de timeout). Utilisez cette option avec précaution car le contrôle n'est pas restitué au process d'appel 4D si aucune connexion n'est effectuée. En particulier, ne passez pas 0 dans ce paramètre si la base est mono-process.

Le paramètre tcp_ID retourne la référence de la session ouverte. Cette référence sera utilisée par toutes les commandes TCP ultérieures exécutées dans la session.

Toute connexion TCP ouverte par la commande TCP_Listen doit être finalement refermée à l'aide de la commande TCP_Close.

Exemple

   C_ENTIER LONG(vTCPID)
   C_ENTIER(vStatus)
   $err:=TCP_Listen ("";0;49152;30;vTCPID)
   $err:=TCP_State (vTCPID;vStatut)
   Si (vStatut=8)     `La connexion a été établie
      FaireQuelqueChose
      $err:=TCP_Close (vTCPID)
   Fin de si 

Référence

Annexe B, Numéros des ports TCP, TCP_Open, TCP_State.


4D - Documentation   Français   English   German   Japanese   Commandes Internet de 4D, Sommaire   Commandes Internet de 4D, Index   Retour   Précédent   Suivant