IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Langage Java Discussion :

Ma tête fume avec la programmation réseau (Socket) : Besoin de conseils stratégiques


Sujet :

Langage Java

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Par défaut Ma tête fume avec la programmation réseau (Socket) : Besoin de conseils stratégiques
    Bien l'bonjour à vous,

    Je me pose de sérieurses questions métaphysique sur la programmation réseau en Java avec les Sockets.

    Je me suis crée une petite maquette sous Eclipse pour valider chaque partie de mon application avant assemblage final.

    Et là je suis sur la validation de la brique de base : La communication entre mon client (Tablet Sony sous Android) et mon serveur (Tvix Xroid - Disque dur Media Player sous Android).

    1 - Le client demande (envoi d'un message) au serveur de lui transmettre un fichier (fichier XML). Si ce fichier n'est pas encore prêt, alors le serveur le signale au client, et le client retente une nouvelle requête ultérieurement.
    2 - Le client envoi au serveur une structure de données constituée comme suit (Je choisi d'envoyer un objet) :
    • Deux variables String
    • Une variable Boolean
    • Un tableau de Long

    3 - Ensuite, le client envoi au serveur une information qui peut prendre plusieurs valeurs prédéfinie (Je choisi d'envoyer un Enum)
    4 - Enfin le client demande au serveur (périodiquement) de lui retourner une structure de donnée permettant au client de mettre à jour son IHM (Je choisi d'envoyer un objet) :
    • Une variable String
    • Une variable Boolean
    • Une variable Long

    Mes questions :
    1. J'ai choisi d'établir chacun des 4 échanges à travers 4 Thread, et donc 4 objets de type java.net.Socket. Est-ce la bonne stratégie ?
    2. Le codage de ce mécanisme devient un vrai casse-tête. Je galère dans la synchronisation des envoi/réception de données. J'ai l'impression que le package java.nio (que je suis en train de découvrir) serait la soluce à ma problématique. Quels sont les avantages de ServerSocket par rapport à ServerSocketChannel ?
    3. Existe-t'il un moyen de connaître le type d'objet véhiculé dans un Socket ? L'idée serait de générer un seul Socket d'échange qui accepte tout format de données. A la lecture du format de la donnée (une structure de donnée, un Enum ou un fichier), je choisi un action adaptée du côté de celui qui recoit l'information.


    J'attend impatiemment vos lumières, car pour l'instant mon projet (voir détail ici) est bloqué...choix stratégique oblige

  2. #2
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    j'a pas tout compris... mais:
    - option 1: échanger des Objects via un ObjectStream, chaque objet "Protocole" contient touskif
    - option 2: rmi ?

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Par défaut
    Citation Envoyé par professeur shadoko Voir le message
    j'a pas tout compris...
    Heu...je suis un peu confus. J'ai pourtant pris soin de tout bien expliquer

  4. #4
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Bonjour,

    Pour reprendre professeur shadoko, tu n'en parles pas dans ton premier post, mais si tu ne connais pas l'API RMI (Remote Method Invocation) te permet de faire de bon traitement sur le reseau. Je ne peux pas trop t'aider pour ma part, j'ai juste utilisé 2-3fois pour découvrir.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Par défaut
    Citation Envoyé par XxArchangexX Voir le message
    Bonjour,

    Pour reprendre professeur shadoko, tu n'en parles pas dans ton premier post, mais si tu ne connais pas l'API RMI (Remote Method Invocation) te permet de faire de bon traitement sur le reseau. Je ne peux pas trop t'aider pour ma part, j'ai juste utilisé 2-3fois pour découvrir.
    Citation Envoyé par professeur shadoko Voir le message
    j'a pas tout compris... mais:
    - option 1: échanger des Objects via un ObjectStream, chaque objet "Protocole" contient touskif
    - option 2: rmi ?
    Pensez-vous sincèrement que vos réponses peuvent m'aider par rapport aux questions précises que je soumets à la communauté ?

  6. #6
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Pas forcement mais en même temps au vue de ton projet ( j'ai regardé ton lien) ce n'est pas un petit truc et tes questions sont comme tu le dis précise, si quelqu'un peut t'aider tant mieux mais on essaye de te donner des pistes sur le principe que tu ne peux pas étudier toutes les pistes, peut être qu'une t'aidera. Sinon tu peux payer un consultat expert à 400€ par jour et tu auras ta réponse.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Par défaut
    Comme je le laisse entendre dans mon message initiale, il y a de fortes chances que je persiste sur la techno Socket, car j'y ai déjà passé bcp de temps à comprendre et à bâtir une maquette (sauf contre-indication, bien évidemment, de la part des experts de la communauté).

    Je voudrais simplement connaître l'intérêt de la classe java.nio.channels.ServerSocketChannel par rapport à java.net.ServerSocket.

    Si quelqu'un peut m'éclairer sur les autres questions subsidiaires, ça me va aussi

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 278
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 278
    Par défaut
    Pour un début de réponse.
    http://humbert-florent.developpez.co.../avance/#LIV-D

    Donc soit tu utilises des sockets bloquants, et tu es obligé de gérer plusieurs threads, et donc si tu as énormément de threads, ce n'est pas forcément une bonne idée. Vu ton application, tu peux te contenter d'un simple serverSocket.

    Soit tu utilises les sockets non bloquants, et donc pas besoin de multi-thread.

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Par défaut
    Super fr1man, je saisi la différence des 2 approches.
    Je vais tester ServerSocketChannel et arbitrer pour le plus efficace.

    Encore merci pour la précision de la réponse

  10. #10
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    Citation Envoyé par elmaestro Voir le message
    Pensez-vous sincèrement que vos réponses peuvent m'aider par rapport aux questions précises que je soumets à la communauté ?
    absolument .... il s'agit de t'indiquer des pistes. mais si ça t'ennuie de chercher d'autres pistes, pardon du dérangement

  11. #11
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Par défaut
    Citation Envoyé par professeur shadoko Voir le message
    absolument .... il s'agit de t'indiquer des pistes. mais si ça t'ennuie de chercher d'autres pistes, pardon du dérangement
    Mais on ne va pas se fâcher pour si peu...voyons mon cher professeur shadoko ! Désolé si j'ai eu l'air agacé.
    Je te remercie pour la piste RMI que je garde sous le coude, et que de toute façon je finirai par tester.

    C'est juste que j'ai posé 3 questions bien détaillées et j'ai eu l'impression d'avoir un peu griffonné pour rien

  12. #12
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 52
    Par défaut
    Oyé...oyé !

    J'ai trouvé un excellent didacticiel sur un autre site qui explique de façon très pédagogique et très pragmatique les bases de la programmation réseau avec des Sockets.

    Je vous donnerai de temps à autre des nouvelles de mon projet d'illuminé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réseau Voip besoin de conseils :)
    Par prati dans le forum Hardware
    Réponses: 1
    Dernier message: 05/04/2011, 08h33
  2. probleme avec le proxy (programmation des Socket)
    Par andyinfo dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 12/05/2009, 23h05
  3. programmation réseau avec quel langage
    Par nasdj dans le forum Développement
    Réponses: 4
    Dernier message: 05/01/2008, 21h37
  4. Programmation réseau : socket et thread
    Par roms712 dans le forum POSIX
    Réponses: 12
    Dernier message: 12/01/2007, 17h27

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