La figure 1 montre les variables globales supplémentaires qu'il faut définir dans le programme de service SCKTPROC pour le changement en mode non-blocage et pour la fonction select(). La figure 2 montre deux nouvelles procédures que l'on ajoute à la fin du programme de service SCKTPROC pour changer le mode
Améliorer le programme de service SCKTPROC
non-blocage et procéder aux timeouts. Et la figure 3
montre un ensemble de procédures de description de fichiers provenant de
l’excellent « RPG IV Sockets Tutorial » online de Scott Klement (voir Autres
ressources pour l’URL). Les procédures de description de fichiers sont utilisées
avec select_tcp() pour valider les timeouts.
Un client et un serveur peuvent bien sûr se parler de différentes manières.
Mais, dans un but pédagogique, prenons le cas courant d’un client socket qui utilise les procédures suivantes à partir du programme
de service SCKTPROC avec l’ajout de select_tcp :
- Opn_tcp donne simplement un descripteur de socket qui
servira à identifier cette connexion. - Con_tcp établit une connexion avec l’URL et le port que
vous fournissez. - Select_tcp vous informe que la connexion socket est entièrement
établie. - Snd_tcp envoie des données via le socket que vous avez
mis en place. - Select_tcp vous indique s’il y a des données à recevoir ou
à mettre en timeout. - Rcv_tcp reçoit des données provenant du socket.
- Cls_tcp ferme le socket.
Les figures 4A à 4G présentent un exemple simple de
programme socket client qui utilise le programme de service
SCKTPROC pour appliquer un timeout. Les variables
read_set, write_set et except_set viennent du « RPG IV
Sockets Tutorial » de Scott Klement, tout comme les procédures
fd_set() et fd_zero(). Les variables read_set, write_set
et except_set de la figure 4A servent à stocker des ensembles
de descripteurs de sockets. Read_set() contient la liste des
descripteurs de sockets à partir de laquelle vous voulez lire.
Write_set() contient l’ensemble de descripteurs de sockets
dans lequel vous voulez écrire (ou vers lesquels vous voulez
envoyer). (Except_set() n’est pas utilisé pour les timeouts.)
Pour ajouter un descripteur de socket à l’un de ces ensembles,
vous devez d’abord l’initialiser avec fd_zero() puis
ajouter le descripteur de socket avec fd_set(). A noter que
vous devriez utiliser fd_zero() et fd_set() uniquement sur
l’ensemble que vous voulez utiliser. Si vous n’utilisez pas un
socket particulier, transmettez-le comme *null à select_tp()
(voir l’exemple de code dans la figure 4G).
On peut parfaitement n’avoir qu’un socket dans le
read_set(). S’il n’y a qu’un descripteur de socket dans le
read_set(),la procédure select_tcp reviendra quand il y aura
quelque chose à recevoir (auquel cas vous ferez un rcv_tcp()
pour l’obtenir), ou elle se mettra en timeout. Vous donnerez
à la variable wait_time de la figure 4A le nombre de secondes
souhaité pour un timeout, puis vous appellerez la procédure
select_tcp.
Nous espérons que vous apprécierez le côté pratique de
ce timeout et aussi que vous l’améliorerez à certains égards.
C’est un peu impressionnant à première vue, mais seul le
premier pas est difficile !
Téléchargez cette ressource
Plan de sécurité Microsoft 365
Les attaquants savent comment prendre le contrôle de votre tenant Microsoft 365, et vous, savez-vous comment le reprendre en main ?
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Visibilité, réputation, clients : ce que les petites entreprises ne pourront plus déléguer en 2027
- IA souveraine : l’Europe avance, mais son interconnexion prend du retard
- Cloud public : la sécurité des données s’impose comme premier critère pour les agents publics
- Le champ de bataille des fournisseurs de services n’est plus l’IA, mais la confiance
Articles les + lus
Continuer avec Exchange Server : quelles conséquences ?
Raccourcis Réseau et Navigateur : le kit de Diagnostic des Professionnels IT
Raccourcis PowerShell et Windows Terminal pour les Professionnels IT
Commandes Windows 11 : le Guide des Outils accessibles avec Win + R
Sécurité : une approche dans la durée avant tout
À la une de la chaîne Tech
- Continuer avec Exchange Server : quelles conséquences ?
- Raccourcis Réseau et Navigateur : le kit de Diagnostic des Professionnels IT
- Raccourcis PowerShell et Windows Terminal pour les Professionnels IT
- Commandes Windows 11 : le Guide des Outils accessibles avec Win + R
- Sécurité : une approche dans la durée avant tout
