Petite question sur le connect() [C++/Winsock] - C++ - Programmation
Marsh Posté le 20-03-2008 à 16:44:29
Euh, j'ai pas l'impression que t'aies compris comment fonctionne les sockets serveur. Juste pour info :
Donc faire 2 ports différents pour 2 clients, ça ne sert à rien.
Marsh Posté le 21-03-2008 à 16:09:39
Ok merci pour cette explication
Mais du coup, avec les accept je créé 2 nouvelles sockets, une pour chaque joueur, et ces sockets utiliseront le meme port ? Ca pose pas de problemes que les 2 joueurs jouent sur le même port ?
J'ai un peu de temps là, je vais faire quelques tests
Marsh Posté le 21-03-2008 à 16:39:59
En effet on dirais que je me compliquais la vie ... Ca a l'air pas mal en créant de nouveau socket par le accept
Merci beaucoup tpierron
Marsh Posté le 19-03-2008 à 15:18:12
Hello !
Voila je fait un programme en c++ qui comporte un executable client et un executable serveur.
Pour info, il s'agit d'un petit quizz qui doit pouvoir se jouer a 2 (les clients se connectent au serveur et celui qui repond le plus vite gagne).
Là mon programme marche pas trop mal, mais je galère un peu sur l'implementation du deuxieme joueur.
Le serveur contient 2 sockets avec 2 ports differents (2048 et 2049).
Ce que je compte faire, pour qu'il n'y ai qu'un executable client et non un pour chaque joueur, c'est que celui ci essaie de se connecter au serveur avec le port 2048, et s'il y a deja quelqu'un dessus (l'executable a donc deja eté lancé et il y a déjà un joueur de connecté) le client doit utiliser le port 2049.
J'ai fait ca comme ca :
Quand je fait comme ca, le premier joueur se connecte sans probleme, et si je relance le client, il reste bloqué au niveau du connect (connect ne renvoie pas d'erreur), comme s'il continuais a tenter de se connecter sur ce port déjà utilisé sans retourner de message d'erreur.
Par contre, si je lance une 3eme fois l'executable client, le connect renvoie bien une erreur, et on rentre donc dans la boucle qui permet de changer de port, et la tout marche bien.
J'aimerais donc savoir comment je pourrais faire pour rentrer dans cette boucle si le port 2048 est déjà utilisé, est il possible par exemple de faire une tentative de connect pendant 2 sec, et si ca ne fonctionne pas, de rentrer dans la boucle, plutot que de rester bloqué sur ce connect ?
Voilà j'espère avoir été assez clair et vous remercie d'avance pour vos idées sur ce probleme qui me donne du fil à retorde
Message édité par bottedumal le 19-03-2008 à 15:23:48