Bonjour tlm,
Je suis en train de développer un client C++ avec une interface graphique OpenGL qui doit communiquer avec un serveur UT2003 via le protocole UDP. J'arrive a faire communiquer les deux de maniere basique grace aux sockets.
En revanche un probleme se présente : la fonction que j'utilise sur le client pour recevoir les datagrammes (recvfrom) est "bloquante". J'entends par la que si j'apelle cette fonction elle va attendre de recevoir un message. Ceci est tres genant car si je ne recois pas de messages, le programme va attendre pour rien.
Pour le moment le client demande, par exemple, constamment le nom de la map courante et le serveur renvoie l'information. Il serait plus judicieux d'envoyer le nom de la map uniquement lorsque le serveur change ...
Pour résoudre le probleme, j'ai donc décidé d'utiliser les threads et d'en utiliser un seul pour la réception dans mon client. Voici en gros mon idée :
-> Faire un thread qui apelle une fonction dans laquelle se trouve une boucle sans fin. Dans cette boucle, je dois recevoir uniquement les messages qui arrivent. Ensuite soit je traite le message tout de suite, soit je crée une liste ou je peux les ajouter. Lorsque les messages seront traites, il iront compléter une classe GameInfo avec des informations sur la map et les joueurs.
Est-ce une bonne solution ?
Nico.
Partager