2011-11-02 3 views
1

J'essaie actuellement d'implémenter une application de chat client-serveur en Java. L'objectif de ce projet est de permettre à un certain nombre de clients de se connecter à un serveur central, à travers lequel chaque client communique. Il devrait fonctionner comme suit: Application de chat client-serveur en Java

  • Server est démarré
  • Un certain nombre de clients sont démarrés et « connecté » au serveur
  • client A, il envoie un message au serveur, qui relaie aux clients B, C etc.
  • Server est arrêté, toutes les connexions sont fermées
  • J'ai été déconner avec différentes façons de mettre en œuvre cela, et souhaite un peu de conseils si TCP ou UDP est un meilleur protocole pour mettre en œuvre la communication entre le client et le serveur. J'envisageais d'utiliser UDP Multicast pour les communications de serveur à client, mais cela causait des problèmes avec les sockets UDP utilisées pour la communication client-serveur. Est-ce que l'utilisation de TCP pour communiquer avec le serveur et UDP Multicast aurait du sens? Ou devrais-je abandonner la multidiffusion et simplement utiliser des datagrammes UDP tout autour, avec le serveur conservant une collection de tous les clients dont il a reçu des messages pour modéliser des "connexions".

    +0

    À combien de clients souhaitez-vous évoluer? –

    +0

    Probablement pas plus de 10 clients. –

    +1

    Vous pouvez directement utiliser la bibliothèque 'JGroups' de sorte que vous puissiez vous concentrer davantage sur d'autres choses que sur la résolution du protocole réseau, la fiabilité du réseau, les performances du réseau et/ou d'autres problèmes de conception de réseau connexes –

    Répondre

    1

    Je vous recommande d'utiliser TCP. C'est assez facile et vous n'aurez pas à gérer l'ordre des paquets, la perte de paquets, etc., puisque TCP le fait déjà pour vous. Vous pouvez jeter un oeil au paquet java.nio qui ont certaines fonctionnalités qui peuvent être utiles. Le surcoût dû à l'utilisation de TCP peut être presque négligé ces jours-ci car de plus en plus d'utilisateurs obtiennent une vitesse de connexion plus rapide et ces quelques octets supplémentaires par paquet ne feront pas grand-chose à la fin. Ce que je comprends de votre question, il ne traitera qu'un groupe limité de clients, et donc il sera remarqué encore moins.