Bonjour,
J'écris un petit jeu multijoueurs et j'ai un problème avec le serveur (ou le client je ne sais pas vraiment justement).
Pour chaque joueur (chaque client) un nouveau thread est lancé, mais lorsque qu'un client envoi une donnée au serveur, tous les threads la recoivent :/
Le but est d'envoyer au serveur chaque action (touche appuyée, touche relachée, ...), qui lui calcule les mouvements et renvoi les nouvelles coordonées.
Si vous trouvez que cette architecture / méthode est mauvaise ou si vous avez des remarques quelconque n'hésitez pas!
Comment ça marche, au niveau du serveur j'ai 2 classes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Puis j'attend les connections :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10WSADATA WSAData; WSAStartup(MAKEWORD(2,0), &WSAData); serverSocket = socket(AF_INET, SOCK_STREAM, 0); serverSin.sin_addr.s_addr = INADDR_ANY; serverSin.sin_family = AF_INET; serverSin.sin_port = htons(PORT); bind(serverSocket, (SOCKADDR *)&serverSin, sizeof(serverSin)); listen(serverSocket, 0);
p->start() lance le thread du joueur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
A chaque code envoyé par un client tous les threads affichent le message "received code XXX at time XXX from player X", où le numéro de joueur est correct (chaque thread recoit comme si "leur" client avait envoyé le code)
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Le client :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
En fait c'est la 2ème version de cette appli que je fait, la première avait été mal conçue et les joueurs pouvaient avancer plus vite si ils avaient un meilleur ping lol. Je n'avais pas ce problème sur la v1 et le code des sockets a été quasiement copié collé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
J'ai essayé plusieurs choses mais impossible de savoir d'où vient ce problème :/, si vous avez une idée ou si vous avez remarqué quelque chose qui ne va pas help merci

 

 
		
		 
        

 
			
			



 Client Serveur multithread : problème
 Client Serveur multithread : problème
				 Répondre avec citation
  Répondre avec citation
Partager