[UDF] Serveur TCP multi-client simple et flexible

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 983
Enregistré le : lun. 19 oct. 2009 03:04
Localisation : Algérie
Status : Hors ligne

[UDF] Serveur TCP multi-client simple et flexible

#1

Message par matwachich » sam. 29 août 2015 23:09

Salut la compagnie!

Je suis de retour avec un nouvel UDF : un serveur TCP multi-clients simple, générique et flexible. Pourquoi flexible? A cause de la manière de recevoir les données (je m'explique plus loin).

Il utilise de manière étendue le nouveau conteneur Map (donc, il vous faut la dernière beta 3.3.15.0).

Ce qu'il peut faire :
- Créer plusieurs serveurs dans un même script
- Il n'y a pas (par défaut) de limite au nombre de clients connectés (la seule limite étant la RAM et les performances des Maps)
- La nombre maximum d'octets que chaque client reçoit (2e paramètre de TCPRecv) peut être réglé pour chaque client séparément
- Time-out d'inactivité (optionnel) pour chaque serveur
- Chaque client se voit attribué lorsqu'il se connecte un Map vide qui peut contenir ce qu'on veut
- Une fonction peut être appelée de façon cyclique à un délai réglable pour chaque client connecté
- Les événements sont rapportés par des fonctions callback (onConnect, onDisconnect, onReceive, onError)
- Quand vous déconnectez un client, vous pouvez assigner un message de déconnexion qui sera envoyé à la fonction callback onDisconnect
- La fonction callback appelée lors de la réception de données (onReceive) doit renvoyer le nombre d'octets consommés par la fonction. Par exemple, si la fonction est appelée avec 100 octets de données mais que vous n'en utilisez que 70, il suffit de retourner 70 et les 30 octets restant seront stockés dans un buffer et renvoyés lors du prochain appel à la fonction onReceive

Pour le télécharger, ça se passe par là

Il y a par contre un problème (qui ne vient pas de l'UDF) :
TCPRecv est boguée depuis les version après la 3.3.8.1 ; elle ne détecte pas quand le client de l'autre coté de la connexion se déconnecte! Ce bug est déjà rapporté ici, mais puisqu'il n'est pas encore corrigé, j'ai posté un autre trac ici

J'espère que ce script servira au plus grand nombre!
J'attend vos suggestions!
@ bientôt :D
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici

Répondre