Bonjour,
Je suis actuellement en train de réaliser une application client/serveur pour un petit jeu en ligne.
J'ai quelques soucis de performances avec mon serveur. Voici son schéma :
J'ai un Thread qui s'occupe d'accueillir le client jusqu'à sa connexion (un par client) et qui envoie ensuite le client dans un container :
le container est un triplet de Threads.
Chaque container contient au maximum 10 clients dans une ArrayList.
Le container distribue chaque client parmis ces trois Threads :
Un bufferedReader pour le Thread qui recevra les packets et un PrintWriter pour le Thread qui enverra les paquets.
Le dernier Thread est celui qui traite les paquets. Ces trois Thread sont reliés pas des tubes interThread : PipedWriter et PipedReader.
Tout marche parfaitement seulement, lors de la connexion d'un client, le processeur s'excite et affiche 100% d'utilisation, donc en gros il est au maximum de ses capacités. J'ai bien vérifié, aucun Thread de trop n'est lancé, et à chaque déconnexion/vidage d'un container, les threads sont tués.
Pour la réception des paquets : une boucle for qui parcourt l'ArrayList de BufferedReader : Si il y a quelque chose a lire dans le br on le lit, sinon on passe au suivant. tout ça dans une boucle while qui se stoppe uniquement si le container est vide.
Est ce ma méthode qui ne fonctionne pas ? D'ou peut bien venir ce problème ? Je n'ai pas un PC surpuissant mais je n'ai jamais réussi à atteindre ces 100% d'utilisation...
Partager