Description de la fonction
La fonction FCT_SELECT permet de multiplexer les requêtes d'E/S sur plusieurs sockets. Elle indique les sockets ayant des événements à traiter à l'aide d'une matrice de nombres entiers.
Pour la révision du micrologiciel ETY 5103, version 3.3 ou inférieure :
-
Un numéro compris entre 1 et 32 est affecté aux descripteurs de socket :
-
Des numéros compris entre 1 et 16 sont affectés aux sockets créés par la fonction de socket. Il s'agit de sockets clients.
-
Des numéros compris entre 17 et 32 sont affectés aux sockets créés par la fonction d'acceptation. Il s'agit de sockets serveurs.
-
La matrice de la tâche MASK (Socket_Activity) permet de diagnostiquer l'état des sockets d'écoute (serveurs) et connectés (clients).
-
Perspective du serveur : tout mot de la matrice utilise les bits disponibles de la matrice pour correspondre au socket d'écoute de l'étape initiale. La fonction d'acceptation génère un numéro de socket différent pour localiser son bit associé dans le deuxième mot de la matrice, qui indique l'état de la connexion du serveur.
-
Perspective du client : le premier mot de la matrice indique l'état de la connexion du client.
Pour le micrologiciel ETY 5103, version supérieure à la révision 3.3 :
-
Vous pouvez utiliser jusqu'à 64 sockets d'écoute (serveur) ou connectés (client). Dans une application serveur, au moins 1 socket doit être configuré comme socket d'écoute. C'est la seule restriction stricte concernant le choix entre les sockets d'écoute et les sockets connectés.
-
Pour déterminer les sockets d'écoute, consultez le numéro de socket fourni comme sortie par la fonction de socket.
-
Pour déterminer les sockets connectés, consultez le numéro de socket fourni comme sortie par la fonction d'acceptation.
-
La matrice de la tâche MASK (
Socket_Activity) permet de diagnostiquer l'état des sockets d'écoute et connectés, qui sont maintenant combinés dans une matrice de 2 ou 4 mots (voir la remarque ci-dessous). Vous devez utiliser la sortie de la fonction de socket ou d'acceptation pour localiser le bit correspondant dans la matrice. Reportez-vous à
Socket_Activity dans le
tableau Description des paramètres.
NOTE : pour les versions supérieures à 3.3, la structure Management_Param requiert un paramètre de longueur.
Le champ de longueur n'est pas utilisé lorsque l'octet de poids fort du paramètre INTE est réglé sur 00. S'il est réglé sur 01, vous devez régler la longueur sur 8. La longueur 8 vous permet de visualiser les données associées aux 64 connexions. Si vous choisissez une valeur inférieure, comme 4 par exemple, vous ne verrez que les données associées aux 32 premières connexions.
Les paramètres supplémentaires et peuvent être configurés.
LD Module_Number
FCT_SELECT Mask_Index, Gest_Index, Management_Param, Socket_Activity
FCT_SELECT(Module_Number, Mask_Index, Gest_Index, Management_Param, Socket_Activity);
Description des paramètres
Le tableau ci-après décrit les paramètres d'entrée.
Paramètre
|
Type
|
Commentaire
|
Module_Number
|
|
Numéro d'emplacement du module réseau dans le rack 0.
|
Mask_Index
|
|
Index du premier mot dans la matrice Socket_Activity
|
Gest_Index
|
|
Index du premier mot dans la matrice Management_Param
|
Le tableau ci-après décrit les paramètres d'E/S.
Paramètre
|
Type
|
Commentaire
|
Management_Param
|
ARRAY [0... 3] OF
|
Pour cette fonction, le rapport d'opération renvoie toujours la valeur 16#00, qui indique l'absence d'erreur.
|
Le tableau ci-après décrit les paramètres de sortie.
Paramètre
|
Type
|
Commentaire
|
Socket_Activity
|
MATRICE [0... 1] DE
- ou -
MATRICE [0... 3] DE (reportez-vous à la remarque dans la section Description de la fonction.)
|
Etat de chaque socket. Chaque bit ayant la valeur 1 indique un événement sur le socket correspondant à ce bit. Exemple :
Pour la version 3.3 ou une version antérieure :
-
Si le bit 5 du premier mot a la valeur 1, le socket 6 sera lu par la fonction FCT_ACCEPT.
-
Si le bit 3 du deuxième mot a la valeur 1, le socket 20 sera lu par la fonction FCT_RECEIVE.
Pour les versions postérieures à la version 3.3 :
-
Si un bit a la valeur 1 sur un socket d'écoute, un serveur est prêt à accepter cette connexion. Si un bit a la valeur 1 sur un socket connecté, les données sont prêtes à être envoyées ou la communication a été interrompue.
Perspective du client : dès qu'une connexion client est établie, le bit correspondant de la connexion (numéro de socket) est réglé sur 1 dans la matrice. Exemple : le socket 33 se trouvera dans le premier bit (bit 0) du troisième mot.
Perspective du serveur : la fonction d'écoute ouvre un socket. Le bit correspondant à ce numéro de socket est réglé sur 1 dans la matrice. Exemple : le socket 3 se trouvera dans le troisième bit (bit 2) du troisième mot. Ensuite, la fonction d'acceptation renverra un numéro de socket différent, dont le bit correspondant sera réglé sur 1 dans la matrice.
NOTE : le numéro de socket de la fonction d'écoute restera à 1 jusqu'à la fermeture du socket.
|