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

Entrée/Sortie Java Discussion :

Multicast smartphone Android


Sujet :

Entrée/Sortie Java

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    août 2011
    Messages
    581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : août 2011
    Messages : 581
    Points : 177
    Points
    177
    Par défaut Multicast smartphone Android
    Bonjour,
    Je me lance dans un nouveau projet, et j'aimerais qu'un maître (smartphone d'un utilisateur sous Android) puisse communiquer avec plusieurs autres devices.
    Les autres devices peuvent également communiquer avec le maître.

    J'ai commencé à développer mon système de communication par socket en utilisant le multicast.
    Mais je me suis vite rendu compte en lisant les docs que le multicast utilise des plages d'ip spécifiques, ce qui est assez contreignant.
    En plus j'aimerais que les devices puissent communiquer même si elles ne sont pas sur le même réseau.

    Selon vous, est-ce possible de faire cela en par socket ?
    Idéalement jailerais le faire en Kotlin, mais je n'ai pas pas vu de dossier Kotlin dans cette section du forum.

    D'avance merci et belle journée

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    septembre 2004
    Messages
    12 445
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 12 445
    Points : 21 073
    Points
    21 073
    Par défaut
    Alors, j'y connais rien en spécificités Android,

    mais il servait à quoi le multicast, au juste ?

    Il suffit de communiquer avec chaque appareil connu. Le multicast ne te servait tout de même pas à envoyer des message à tout Internet dans l'espoir que ton appli soit installée sur quelques appareils ?

    Le problème ça va pas être l'absence de multicast, ça va être les NAT, le fait qu'un appareil connecté normalement au réseau ne peut pas recevoir de requête réseau, seulement en envoyer. Typiquement il va vraisemblablement te falloir un serveur qui sert d'intermédiaire, pas que les périphériques se contactent directement les uns les autres. Et ce serveur sera mondial (ou alors avec un partitionnement savamment organisé) et donc capable de tenir la charge de tous tes utilisateurs.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    août 2011
    Messages
    581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : août 2011
    Messages : 581
    Points : 177
    Points
    177
    Par défaut
    Bonjour merci pour votre réponse.
    Le but du multicast c'était de contacter les devices connecté au groupe.

    En fait j'aimerais faire un genre de chat, mais sans passer par un serveur dédié (car il risque d'y avoir beaucoup de "salon" de chat à gérer.

    J'aimerais donc que le "serveur de communication" soit créé sur le smartphone de la personne qui créer un "salon".

    Après réflexion c'est un genre de chat décentralisé.

    Mais je précise que le but n'est pas d'envoyer des requêtes sur le réseau à nimporte qui, seulement aux utilisateurs qui se seront inscrit au salon

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    août 2011
    Messages
    581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : août 2011
    Messages : 581
    Points : 177
    Points
    177
    Par défaut
    Bon je vais procéder par étape se sera plus simple.
    Dans un premier temps je vais faire une communication par socket classique, un smartphone sera le serveur, et plusieurs clients se connecteront dessus (en étant dans un premier temps sur le même réseau).

    Il faut jusque que je trouve comment faire pour tester ça avec un device physique et un device emulé par Android studio. Mais il doit surment y avoir un tas de documentations la dessus

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    septembre 2004
    Messages
    12 445
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 12 445
    Points : 21 073
    Points
    21 073
    Par défaut
    Ouaip j'ai fini par réaliser que j'avais confondu multicast avec broadcast. Ça fait plus de sens du coup maintenant. Mais bon, de fait, ça marche pas d'un réseau à l'autre.

    Ça peut très bien se faire en gérant les communications individuelles au lieu de multicast.

    Mais le problème va rester sur comment traverser les NAT. J'ai découvert qu'avec une technique STUN il est possible de faire du véritable pair-à-pair, mais elle a quand même besoin d'un serveur central pour démarrer la connexion.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    août 2011
    Messages
    581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : août 2011
    Messages : 581
    Points : 177
    Points
    177
    Par défaut
    Intéressant je ne connaissais pas cette technique, je vais donc me renseigner sur ça pour voir si je peux l'utiliser.
    Mon idée c'était de passer par des sockets, pour pouvoir contacter des utilisateurs enregistrés dans le "salon", même si ces utilisateurs sont loins. Et même si des utilisateurs sont dans la même pièce, ça évitait de devoir obligatoirement se connecter au même réseau wifi, ou d'utiliser le Bluetooth. J'aurai aimé que ça fonctionne avec une simple connexion 4g.

    Peut être qu'il y a une autre façon de faire.
    J'avais fait des tests avec un système de notification interne via Firebase messaging.
    Ça fonctionnait bien, mais j'aimerais que mon application ne dépende pas d'un gros service externe de google ou autre

  7. #7
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    août 2011
    Messages
    581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : août 2011
    Messages : 581
    Points : 177
    Points
    177
    Par défaut
    Bon après réflexion, je vais partir sur un truc plus simple.
    Je vais considérer que les users sont dans une même pièce.
    Du coup, j'ai exploré de nouvelles pistes.
    J'ai pensé faire une communication par Bluetooth. Les clients se connectent au maitre. Mais j'ai découvert que tous les smartphones ne peuvent pas forcément se connecter à plusieurs devices en même temps. Donc c'est pas top non plus.
    Je commence a désespérer, et a me demander si c'est possible de faire ça de manière décentralisé, et sans se connecter à un même réseau

Discussions similaires

  1. Réponses: 9
    Dernier message: 22/02/2011, 17h07
  2. Réponses: 23
    Dernier message: 16/11/2010, 16h12
  3. Réponses: 1
    Dernier message: 16/07/2009, 10h38
  4. Réponses: 0
    Dernier message: 16/07/2009, 08h15
  5. Réponses: 0
    Dernier message: 16/07/2009, 08h15

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