Cclient est une classe
PUBLIC
sNameSocket est une chaîne
iport est un entiers
sip est une chaîne
sdonne est une chaîne
sinfo est une chaîne
sEtatServeur est une chaîne
sEtatConnect est une chaîne
sEtatEchange est une chaîne
sEtatEnvoie est une chaîne
scanal est une chaîne
nbClient est un entier
//VERIFICATION CREATION ET ECOUTE SERVER
bServCreer est un booléen
FIN
//CRÉATION DU SOCKET CLIENT
PROCEDURE CreeServer(sIdSocket,idport)
:sNameSocket=sIdSocket
:iport=idport
:sip =NetAdresseIP() // "192.168.1.118"
Trace("Socket " ,:sNameSocket)
SI SocketCrée(:sNameSocket,:iport,:sip) = Faux ALORS
Erreur("Erreur création " + ErreurInfo(errMessage))
:sEtatServeur="Serveur Eteint ! "
bServCreer=Faux
SINON
SI SocketChangeModeTransmission(:sNameSocket, SocketSansMarqueurFin)= Vrai ALORS
:sEtatServeur="Serveur Démarré ! "
bServCreer=Vrai
ThreadExécute("Thread1", threadNormal,Accepte)
Trace("Thread 1 exécuté")
Trace("Etat connexion server : ",:sEtatServeur)
FIN
FIN
//ATTENTE DE LA CONNEXION AU SERVEUR
PROCEDURE Accepte()
BOUCLE
Trace("Attente-Connexion ------>")
//JE NE PASSE PAS DANS SocketAttendConnexion DONC MON CANAL N AIT PAS CREER
SI SocketAttendConnexion(:sNameSocket,4000) ALORS
Trace("Demande du Client")
// Si la connexion est acceptée, la gestion de cette connexion est réalisée dans un thread spécifique
:scanal = SocketAccepte(:sNameSocket)
:nbClient++
FIN
Trace("Tread 1 ok ET nbClientEnCour ->",nbClient)
Trace("Canal ------> ",:scanal)
ThreadPause(200)
FIN
//CONNEXION LANCER DANS UN THREAD
PROCEDURE Connecter()
SI(:bServCreer) ALORS
ThreadExécute("Threadc1",threadNormal,GereConnexion)
FIN
//CONNEXION AU SERVEUR
PROCEDURE GereConnexion()
//:sIp = NetAdresseIP() //Adresse Ip clientt : "192.168.1.98"
sIptest est une chaîne = "192.168.1.118"
iPorttest est une entier = 2001
BOUCLE
SI PAS(SocketExiste(:sNameSocket))ALORS
SI PAS SocketConnecte(:sNameSocket,iPorttest,sIptest) ALORS
Erreur("erreur de connexion au server " + ErreurInfo(errMessage))
:sEtatConnect="Connexion refusé ! "
SINON
:sEtatConnect="Connexion établi"
FIN
SINON
DonneeLecture()
FIN
Trace("Thread C 1 OK ")
Trace("Etat-Connect",:sEtatConnect)
ThreadPause(200)
FIN
//LECTURE DES DONNES DE LA SOCKET SERVEUR
PROCEDURE DonneeLecture()
TANTQUE(:scanal<>"")
:sdonne = SocketLit(:scanal ,Faux,20)
FIN
SI :sdonne <> "" ALORS
ListeAjoute(FEN_mere.LISTE_cb,:sdonne)
sEtatEchange="Donnèe reçu"
SINON
sEtatEchange="Donnèe non reçu"
FIN
Trace("canal lecture ===",:scanal)
Trace("Données ===",:sdonne)
Partager