version 6.8.1 (Modifiée)
TCP_Listen (clientDistant; portLocal; portDistant; timeOut; tcp_ID) Entier
Paramètre | Type | Description | |
clientDistant | Alpha | Nom ou adresse IP du client | |
Adresse IP de la machine connectée (si une variable | |||
contenant une chaîne vide est passée) | |||
portLocal | Entier | Numéro de port local, | |
0 = Utiliser un port local vacant | |||
Numéro du port local utilisé (si 0 passé) | |||
portDistant | Entier | Numéro du port à écouter | |
timeOut | Entier | Nombre de secondes à attendre avant timeout, | |
0 = Pas de timeout | |||
tcp_ID | Entier long | Référence de la session TCP ouverte | |
Résultat | Entier | Code 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.