Bonjour à tous!
Je développe actuellement un BlackJack en réseau en java dans le cadre d'un projet d'école. Le but est de créer un serveur (sans interface graphique) où vienne se connecter jusqu'à 5 clients pour jouer au Black Jack. Je rencontre actuellement un problème très inquiétant au niveau de la communication et sur lequel j'ai déjà passé de nombreuses heures...
Voici globalement l'architecture de mon programme du côté serveur :
- Une classe ArrayServer qui est un thread et qui sert simplement à instancier une autre classe serveur contenant toutes les méthodes de communication (envoi d'objet via une sérialisation, envoi de message de type String, etc...) et des informations sur le serveur lui-même (le nombre de joueur connecté, etc..).
- Une classe ThreadClient qui gère en fait la connexion d'un nouveau client (un thread est lancé à chaque fois qu'un nouveau client se connecte). Ce thread se charge de créer les différents reader et writer pour établir une communication entre le serveur et le client. Ces reader et writer sont ensuite stocké dans un objet Client qui est stocké dans une ArrayList sur le serveur.
- Une classe ThreadRegle qui gère le déroulement de la partie.
Voici grossièrement l'architecture de mon serveur. Les problèmes que je rencontre sont les suivant :
- Lorsque j'envois du serveur un objet sérialisé, tout fonctionne. A partir du moment, où le client envois une réponse au serveur (de n'importe quel type, String,Objet, etc...) les données sont corrompues (pour les objets, cela génère une exception et pour les strings, deux caractères "??" apparaissent devant le String.
- Si le serveur commence par envoyer un message de type String, la donnée est directement corrompu du côté client avec les deux caractères "??" qui apparaissent.
La communication réseau se fait en TCP/IP (avec Socket et ServerSocket simplement), et les writer et reader ne peuvent pas être fermé sans quoi la connexion client/serveur est rompu. La version de javac utilisé est la 1.5.
Voila, dans l'espoir que quelqu'un puisse m'aider...La fin de mon projet approche à grand pas, et je ne sais plus quoi faire.
Merci d'avance!
Elthenia
Partager