bonjour,

je me suis inspirer de l'exemple des socket wxwidget avant de poster. je voulais c'est que le serveur a un moment donné puisse envoyer un message a un client connecté.
Je précise que j'enregistre les sock client sur le serveur(indice: avec map).

JE detail : En fait il ya le module serveur ! OK, qui ecoute et connecte les clients. et selon la fonction choisit du client le serveur execute un script et repond au client.

avant, le client lance (selon mes menus) une action sur le serveur avec writeMsg et attend un retour avec ReadMsg (avec en flag wxSOCKET_WAITALL avant toute les operations).
et tout marchait. sauf que par moment,rarement ca se bloque. ca se plante pas, ca se bloque, comme si le writemsg du client ne partait pas ou que le readmsg du serveur attendais ou vice versa. et des fois ca marche nickel. bref

Maintenat j'ai ajouter au client dans les évènement du socket un case wxSOCKET_INPUT: avec aussi des "if" pour vérifier l'action du venant du serveur si celui decide de parler au client sans que ce dernier ne reponde. et c'est la que rien ne marhcait et je suis venu poster ici.

voila coment je procedais: je récupère dans le wxSOCKET_INPUT du client le contenu avec Readmsg

et je teste ce que je recupere du serveur:
if (srv_msg="redemarre") then ...

jusque la voila comment je procedais et ca marche pas quand le serveur envoyais un message. mais quan j'enleve le code dans le wxSOCKET_INPUT du client la communication client serveur marche bien avec les readmsg et writemsg (a part le blocage que je comprend pas).

Je rappel que j'utilisait WriteMsg et ReadMsg.

Hé bien j'ai juste changer tout les ReadMsg et autre par Read et Write et tout marche. j'ai aussi enlevé les waitforread et je récupère dans le wxSOCKET_INPUT du client le contenu avec Peek qui n'efface pas ce qui est dans la socket (si on peut dire ca comme cela)

le serveur peut envoyer un message au client sans que celui ci n'ai envoyé quoi que ce soit, et quand les client envoient alors le serveur peut repondre et ca marche sans probleme. je post le code apres.

Il ya un petit soucis : ca se bloque toujours des fois sans raison, j'utilise en fait un serveur qui se connecte a une base de données mysql et le client peut affiche la liste des aliment ou ajouter des region de ma base de données.

le client sur son interface clic sur ajout region, et une interface d'ajout se lance, il renseigne les champs et valide. le sock client envoi un message au serveur comme dans l"exemple du wxwidget
unsigned char c=0xAC par exemple.
le serveur recoit et active la fonction AjoutRegion dans laquel il fait un insert.....
Le client après avoir envoyer la code, attend avec un Read pour savoir si tout est OK. le serveur envoie un write("1",1*sizeof(wxChar)) si tout va bien ou write("0",1*sizeof(wxChar)) si erreur
le client lit avec read.

le probleme est que ca marche aleatoirement, par exemple je peut activer la fonction ajout, et j'ajoute plus de 10 region, il ajoute puis a un moment le client et serveur attende je ne sais koi.
j'arrete tout je relance et la je peu ajouter plus de 50 region sans blocage. puis au suivant, si je relance l'appli, il se bloque des le premier ajour.

Je ne sais pas a quoi c'est du! si yavait un probleme je n'allais meme pas pouvoir ajouter un seul.

es ce que les socket bugs? ou bien il faut que je mette un "\n" a chaque write. ou bien je dois vider le sock et comment! ou les read et write on un truc particulier? ou dois faire un sacrifice au genie de l'informatique?

ou que dois je faire !

C'est pratiquement la seule chose qui me bloque, juste un truc aleatoire.

Merci de m'aider