Voici une meilleure mise en forme du code :
PROCEDURE reception()
sIP est une chaîne
sMessage est une chaîne
// Tant que le thread n'est pas arrêté, on attend des messages
BOUCLE
// Attente de connexion
QUAND EXCEPTION DANS
SI SocketAttendConnexion(csSocketServeur,30)=Vrai ALORS
csSocketactive=SocketAccepte(csSocketServeur)
SI EnModeTest()=Vrai ALORS
Trace("Connexion sur :"+csSocketServeur+"|Client : "+csSocketactive)
FIN
SocketChangeModeTransmission(csSocketServeur,SocketSansMarqueurFin)
//lit_msg(csSocketactive)
sIP=SocketClientInfo(csSocketactive,SocketAdresse)
sMessage=UTF8VersChaîne(SocketLit(csSocketactive,Vrai))
SI sMessage<>"" ALORS
sai_msg=sMessage
TableAjouteLigne(tb_msg,sIP,DateVersChaîne(DateSys())+" "+Gauche(HeureVersChaîne(HeureSys()),8),ExtraitChaîne(sMessage,1,RC),0)
flog("Msg : "+ExtraitChaîne(sMessage,1,RC))
FIN
SocketFerme(csSocketactive)
csSocketactive=""
FIN
FAIRE
Erreur("Problème détecté sur la socket de réception",ExceptionInfo())
SORTIR
FIN
Multitâche(-2)
FIN
J’utilise un thread de façon à ce que la réception des messages s’effectue en tâche de fond de manière permanente et que d’un autre coté je puisse faire des actions sur les messages reçus de type filtres ou tri …
A noter que le blocage ne m’est jamais arrivé pendant des manipulations, mais plutôt de nuit …
En ce qui concerne le PC, il ne bloque jamais si le programme n’est pas lancé.
Cordialement
B.Mellé