Vote des utilisateurs
0
0
Détails
Licence : GPL
Mise en ligne le 16 novembre 2013
Plate-formes :
Linux, Windows
Langue : Français
Référencé dans
Navigation
Serveur TCP multithread
Serveur TCP multithread
le fichier compressé contient deux classes, ServeurTCP joue le rôle du serveur et ClientTCP c'est le client.
le serveur peut communiquer avec plusieurs clients simultanément, si le client veut quitter la conversation il suffit qu'il envoie une chaine vide.
le serveur peut communiquer avec plusieurs clients simultanément, si le client veut quitter la conversation il suffit qu'il envoie une chaine vide.
Bonjour,
Je vous propose un nouvel élément à utiliser : Serveur TCP multithread
le fichier compressé contient deux classes, ServeurTCP joue le rôle du serveur et ClientTCP c'est le client.
le serveur peut communiquer avec plusieurs clients simultanément, si le client veut quitter la conversation il suffit qu'il envoie une chaine vide.
Qu'en pensez-vous ?
Je vous propose un nouvel élément à utiliser : Serveur TCP multithread
le fichier compressé contient deux classes, ServeurTCP joue le rôle du serveur et ClientTCP c'est le client.
le serveur peut communiquer avec plusieurs clients simultanément, si le client veut quitter la conversation il suffit qu'il envoie une chaine vide.
Qu'en pensez-vous ?
Il y a un Thread.sleep qui traine dans le serveur, pourquoi il est là?
Chaque ligne crée une nouvelle connexion au serveur, pourquoi ne pas les réutiliser?
Les connexions ne sont jamais cloturées, ni du coté serveur, ni du coté client.
Enfin, vous oubliez de préciser l'encodage de vos Reader / Writer, vous allez avoir des problèmes quand vous travaillerez avec des OS différents pour le client et le serveur.
Code : | Sélectionner tout |
new InputStreamReader(client.getInputStream(), "UTF-8")
Le thread n'effectue qu'un seul traitement. Tout ce que tu fais c'est attendre une seconde après le début de la connexion avant de répondre au client.
Faire sortir la connexion de la boucle dans le client, faire une boucle coté serveur.
Oui, et toutes les autres connexions que tu as établis?
Par exemple.
Faire sortir la connexion de la boucle dans le client, faire une boucle coté serveur.
Oui, et toutes les autres connexions que tu as établis?
Par exemple.
Faire sortir la connexion de la boucle dans le client, faire une boucle coté serveur.
du coté client, je dois faire sortir cette ligne :
Code : | Sélectionner tout |
client = new Socket("localhost", 7900);
et pour le serveur, j'ai déjà une boucle while !
Oui, et toutes les autres connexions que tu as établis?
Ben oui, t'as pas besoin de faire une nouvelle connexion pour chaque ligne
Uniquement sur le accept(). Il te faut aussi une boucle par client, pour traiter chaque ligne envoyée. Tu a N clients, qui doivent envoyer M message => Il te faut deux boucles dans le serveur. Parce que, en l'état de ton serveur, le threading ne sert même à rien vu le peu de travaile que tu fait sur chaque connexion.
Avant que ça ne commencer à faire bouger le GC, tu aura surtout bouffé toutes les sockets disponibles dans l'OS
Uniquement sur le accept(). Il te faut aussi une boucle par client, pour traiter chaque ligne envoyée. Tu a N clients, qui doivent envoyer M message => Il te faut deux boucles dans le serveur. Parce que, en l'état de ton serveur, le threading ne sert même à rien vu le peu de travaile que tu fait sur chaque connexion.
Avant que ça ne commencer à faire bouger le GC, tu aura surtout bouffé toutes les sockets disponibles dans l'OS
C'est compris. Merci beaucoup pour vos remarques pertinentes.
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.