Bonjour, j'ai un gros problème chez un client, j'ai une erreur qui se reproduit de plus en plus souvent d'ou cela vient il ? C'est un serveur de socket developpé à partir du serveur de socket fourni en exemple par windev.
Merci par avance.
Ci joint l'erreur et à la fin le code.
Erreur à la ligne 19 du traitement Procédure locale MettreAJourTable. Vous avez appelé la fonction SectionCritiqueFin.
**********************************************
Informations techniques
Projet : SRVSOC
Dump de l'erreur du module <WD90VM.DLL> <9.01At>.
- Appel WL : Traitement de <GES_PRIN.PROCEDURE.MettreAJourTable>, ligne <19>, thread <0> Fonction <SectionCritiqueFin>, n° de syntaxe <1>
- Niveau : erreur fatale (EL_FATAL)
- Code erreur : 0
- Code erreur WD55 : 0
- Pas de code d'erreur système
- Pas de message d'erreur système
- Pas de message d'erreur
- Infos de debug : ##(CXError)-Pas de définition d'erreur dans gstErrorDef pour l'identifiant <2910>## Fonction (0,60)
- Infos attachées : EIT_DATEHEURE : 28/06/2005 15:48:54 EIT_PILEWL : Procédure locale MettreAJourTable (GES_PRIN.PROCEDURE.MettreAJourTable), ligne 19 Procédure locale GestionConnexion (GES_PRIN.PROCEDURE.GestionConnexion), ligne 11
- Pas d'identifiant dans le .err
//////////////////////////////////////////// CODE ////////////////////////////////////////////
PROCEDURE MettreAJourTable(sNomSocket,sNomThread,sIP)
nIndice est un entier
SectionCritiqueDébut("Gestion")
// On recherche si cette connexion est déjà référencé dans la table nIndice = TableCherche(Table1.Thread,sNomThread)
// Nouvelle connexion ? SI nIndice = -1 ALORS // Nouvelle connexion TableAjouteLigne(Table1,sIP,sNomThread,sNomSocket,HeureSys()) SINON // Mise à jour de connexion TableModifieLigne(Table1,nIndice,sIP,sNomThread,sNomSocket,HeureSys()) FIN SectionCritiqueFin("Gestion")
***********************************************************************************************************************
PROCEDURE GestionConnexion(sNomConnexion)
sMessage est une chaîne sNomThread est une chaîne = sNomConnexion bModifTable est un booléen
sIp est une chaîne = SocketClientInfo(sNomConnexion,SocketAdresse)
// Lecture des messages BOUCLE MettreAJourTable(sNomConnexion,sNomThread,sIp) bModifTable=Faux SI gSTypConn = "PPC" ALORS sMessage = UnicodeVersAnsi(SocketLit(sNomConnexion,Faux,10)) SINON sMessage = SocketLit(sNomConnexion,Faux,10) FIN SELON ExtraitChaîne(sMessage,1,TAB) CAS "XXX" : // Sortie de l'utilisateur bModifTable=Vrai SORTIR CAS "PSW" : //ON ANLYSE LE LOGIN/MOT DE PASSE bModifTable=Vrai fPSWDemande(sMessage,sNomConnexion) CAS "LST" : //ON LANCE LA LISTE DES UTILISATEURS bModifTable=Vrai fLSTDemande(sMessage,sNomConnexion) CAS "CLT" : //LECTURE D'UN CLIENT bModifTable=Vrai fCLTDemande(sMessage,sNomConnexion) CAS "S10" : bModifTable=Vrai fS10Demande(sMessage,sNomConnexion) CAS "S11" : bModifTable=Vrai fS11Demande(sMessage,sNomConnexion) CAS "S12" : bModifTable=Vrai fS12Demande(sMessage,sNomConnexion) CAS "P10" : bModifTable=Vrai fP10Demande(sMessage,sNomConnexion) CAS "P11" : bModifTable=Vrai fP11Demande(sMessage,sNomConnexion) CAS "P12" : bModifTable=Vrai fP12Demande(sMessage,sNomConnexion) CAS "T10" : bModifTable=Vrai fT10Demande(sMessage,sNomConnexion) CAS "T11" : bModifTable=Vrai fT11Demande(sMessage,sNomConnexion) CAS "T12" : bModifTable=Vrai fT12Demande(sMessage,sNomConnexion) CAS "T13" : bModifTable=Vrai fT13Demande(sMessage,sNomConnexion) CAS "T14" : bModifTable=Vrai fT14Demande(sMessage,sNomConnexion) CAS "401" : bModifTable=Vrai fC10Demande(sMessage,sNomConnexion) CAS "402" : bModifTable=Vrai fC11Demande(sMessage,sNomConnexion) CAS "403" : bModifTable=Vrai fC12Demande(sMessage,sNomConnexion) CAS "404" : bModifTable=Vrai fC13Demande(sMessage,sNomConnexion) CAS "405" : bModifTable=Vrai fC14Demande(sMessage,sNomConnexion) CAS "406" : bModifTable=Vrai fC15Demande(sMessage,sNomConnexion) CAS "407" : bModifTable=Vrai fC16Demande(sMessage,sNomConnexion) CAS "408" : bModifTable=Vrai fC17Demande(sMessage,sNomConnexion) CAS "" : // Ce n'est pas une lecture bloquante, on retourne dans la boucle Multitâche(-1) AUTRES CAS : // Message à poster //GestionMessage(sIP,sMessage) FIN
FIN
// Fermeture de la socket SI gBDebugage ALORS Trace("Fermeture de la socket ="+sNomConnexion) SocketFerme(sNomConnexion) |