Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Plateformes (Java EE, Jakarta EE, Spring) et Serveurs Discussion :

Comment définir mon protocole de communication ?


Sujet :

Plateformes (Java EE, Jakarta EE, Spring) et Serveurs

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    mai 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2016
    Messages : 14
    Points : 14
    Points
    14
    Par défaut Comment définir mon protocole de communication ?
    Bonjour,

    Je souhaite créer une application client-serveur qui utilise des sockets TCP. Le serveur attend les clients sur le port 1027 et envoie régulierement à chaque client un message contenant le nombre de clients qui sont connectés. Le serveur doit donc être capable de gérer plusieurs clients simultanément. Le client se connecte au serveur et affiche les nombres reçus, l'arrêt de la communication se fait à l'initiative du client.
    Question : je souhaite définir un protocole de communication. Avez-vous des idées ? Comment sera le code du serveur et du client ?
    Merci de vos réponses et de votre aide.

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    août 2006
    Messages
    3 260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2006
    Messages : 3 260
    Points : 4 098
    Points
    4 098
    Par défaut
    Côté serveur, tu peux par exemple utiliser un thread par client connecté ou alors utiliser les capacités de multiplexage de NIO 2, un seul thread qui gère plusieurs connexions.
    Pour ton protocole, sérialise un objet avec différents attributs qui permettront au serveur de serveur comment interpréter les données reçues, si c'est un message, une demande de déconnexion, etc...

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    mai 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2016
    Messages : 14
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par fr1man Voir le message
    Côté serveur, tu peux par exemple utiliser un thread par client connecté ou alors utiliser les capacités de multiplexage de NIO 2, un seul thread qui gère plusieurs connexions.
    Pour ton protocole, sérialise un objet avec différents attributs qui permettront au serveur de serveur comment interpréter les données reçues, si c'est un message, une demande de déconnexion, etc...
    merci beaucoup de votre réponse, comment es que je vais ecrire le code deu client et du serveur svp? jai vraiment du mal!!!

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : février 2006
    Messages : 60
    Points : 190
    Points
    190
    Par défaut
    Concernant le format de message, je suis contre la sérialisation d'objet. On se retrouve vite confronté au problème de versions quand les clients ne sont pas à jour...
    Je préfère de loin du simple JSON. Et si la taille du payload est vraiment critique, je préfère encore faire mon propre protocol de serialization...

    Bref, pour commencer ne t'embetes pas, utilise le JSON : http://jmdoudoux.developpez.com/cour...-json.php#json


    Pour le code du client, c'est très simple. Il y a des tuto sur les socket un peu partout.

    Pour ce qui est du serveur, c'est un peu plus compliqué, car il faut pouvoir gérer plusieurs clients, et chaque client et susceptible de parler en même temps qu'un autre.
    Mais NIO2 avec les Handler facilite beaucoup les choses ! Ca permet de fonctionner comme avec des Listeners : un callback est appelé quand un évènement particulier se produit (une connexion, déconnexion, un message...)

    Un bon tuto (mais en anglais) http://www.baeldung.com/java-nio2-async-socket-channel

  5. #5
    Membre éprouvé
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    octobre 2012
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : octobre 2012
    Messages : 624
    Points : 1 248
    Points
    1 248
    Par défaut
    Question bête, l'implementation du client, du serveur et du protocole sont pour les cours? Parce pour faire ce que tu décrits, Vertx fait ca en 15-20 lignes, et il n'y a plus qu'à implémenter le protocole, si tu ne veux pas utiliser celui qu'ils proposent par défaut...
    «Dieu ne joue pas aux dés.» - Albert Einstein. Et pan! 30 ans de retard dans la théorie quantique!
    «Tout n'est pas politique, mais la politique s'intéresse à tout.» - Nicolas Machiavel. Et surtout à ceux qui ne s'y intéressent pas.

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : février 2006
    Messages : 60
    Points : 190
    Points
    190
    Par défaut
    D'autant plus que Vert.x intègre lui même tout ce qu'il faut pour manipuler du JSON !

    Mais vu la demande du programme, on dirait vraiment un soft d'apprentissage. Donc j'ai préféré orienté vers une solution sans bibliothèque tierce.

Discussions similaires

  1. Aide pour la prise en main du Protocole MODBUS/JBUS
    Par homeostasie dans le forum MFC
    Réponses: 24
    Dernier message: 20/05/2006, 15h56
  2. Réponses: 1
    Dernier message: 18/12/2005, 19h19
  3. [Protocole TCP] Utilitaire pour Tracer une session
    Par =JBO= dans le forum Développement
    Réponses: 3
    Dernier message: 04/06/2005, 19h28
  4. raw socket et protocole TCP/IP
    Par robertmouac dans le forum Développement
    Réponses: 3
    Dernier message: 09/03/2005, 23h09
  5. Ping sous protocole TCP (et non UDP)
    Par ovdz dans le forum Développement
    Réponses: 2
    Dernier message: 19/06/2003, 14h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo