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
Guide de Cyber-résilience pour Microsoft 365
La violation de votre tenant M365 va au-delà d’un simple incident de cybersécurité. Elle peut entraîner une interruption opérationnelle généralisée, des perturbations commerciales et une exposition de vos données sensibles. Découvrez les méthodes et technologies pour évaluer, comparer et renforcer votre posture de sécurité Microsoft 365.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Souveraineté numérique : réinvestir les fondations pour sortir de la dépendance à Microsoft
- L’essor de l’IA propulse les cyberattaques à des niveaux records
- L’IA sous contrôle : un impératif pour la souveraineté des entreprises
- CESIN : un baromètre qui mesure le risque cyber réel
Articles les + lus
CES 2026 : l’IA physique et la robotique redéfinissent le futur
Les 3 prédictions 2026 pour Java
Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
Face à l’urgence écologique, l’IT doit faire sa révolution
D’ici 2030, jusqu’à 90 % du code pourrait être écrit par l’IA, pour les jeunes développeurs, l’aventure ne fait que commencer
À la une de la chaîne Tech
- CES 2026 : l’IA physique et la robotique redéfinissent le futur
- Les 3 prédictions 2026 pour Java
- Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
- Face à l’urgence écologique, l’IT doit faire sa révolution
- D’ici 2030, jusqu’à 90 % du code pourrait être écrit par l’IA, pour les jeunes développeurs, l’aventure ne fait que commencer
