Bonjour à tous
Je travaille actuellement à l'élaboration d'un jeu 3D en C++.
Simplifions en disant qu'il s'agit d'une sorte de bataille navale à N joueurs
J'ai un vrai souci vis à vis des sockets winsock qui permettent de gérer les aspects réseaux (TCP, recv non bloquants)
a) En effet, le process principal (le main) est géré par GlutMainLoop()
b) Parallèlement en mode Server, un Thread de priorité THREAD_PRIORITY_BELOW_NORMAL permet de gérer l'attente des connexions TCP
c) Dès que la première connexion est enregistrée, un thread de priorité THREAD_PRIORITY_BELOW_NORMAL permet côté Serveur de faire des receive non bloquants sur tous les slots réseau libres
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
d) Côté client, deux threads priorité THREAD_PRIORITY_BELOW_NORMAL gèrent
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
- l'envoi des messages
-la réception des messages
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
L'ensemble marche bien mais les traitements réseaux sont très lents. Lorsque je teste 1 ou 2 instances de l'exe sur la même machine, en réseau local (127.0.0.1), plusieurs secondes peuvent passer entre l'envoi de la donnée depuis un client (un texte de chat par exemple) et son affichage sur les autres clients
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
Si j'augmente la priorité des threads, c'est l'OpenGL qui devient subitement plus lent et le nombre de fps diminue.
Que faire, que changer dans le moteur réseau ?
Merci d'avance

 

 
		
		 
         
 

 
			
			


 
   



 [Réseau] Performance des sockets c++
 [Réseau] Performance des sockets c++
				 Répondre avec citation
  Répondre avec citation

 
  
 
 
			 Envoyé par GoldenEye
 Envoyé par GoldenEye
					
 
  
 
 
 
 
			 
				
Partager