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

Réseau Discussion :

réception Multicast et portabilité


Sujet :

Réseau

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 17
    Par défaut réception Multicast et portabilité
    Bonjour à tous,

    Je me tourne vers vous pour essayer de trouver des développeurs qui auraient eu (et résolu ?) le problème qui se pose à moi.

    Je dois écrire un bout de code capable de recevoir des trames UDP en multicast. Pour info (je ne le savais pas ce matin), le multicast est entre l'unicast et le broadcast : une trame est envoyée à une adresse ip unique de classe D (224.0.0.0 à 239.255.255.255), et plusieurs clients abonnés à ce groupe reçoivent cette trame.

    En C++ avec Qt, pour envoyer la trame, un petit coup de QUdpSocket avec une écriture sur l'adresse et le port, et le tour est joué...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    QUdpSocket * udp;
    QHostAddress adr;
    adr = "239.255.255.250";
    qint16 port = 1900;
    QByteArray datagram = "NOTIFY * HTTP/1.1\r\n[...]";
    udp->writeDatagram(datagram.data(), adr, port);
    Pour ceux qui auraient reconnu, c'est un message SSDP, utilisé dans la phase 1 (découverte) du protocole UPNP.

    Maintenant il faut que je code l'autre coté, la réception du message, et c'est là que ça se complique. La logique simple aurait voulu qu'un code dans ce style fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    udpSocket = new QUdpSocket(this);
    QHostAddress multicastAddr("239.255.255.250");
    udpSocket->bind(multicastAddr, 1900, QUdpSocket::ShareAddress); //Renvoi false :(
    Mais si c'était le cas je ne serais pas ici

    Plusieurs personnes se sont déjà posées la même question, il y a des pistes sur Internet :

    Malheureusement, la classe QSocketDevice est dépréciée depuis Qt4. Les informations de migrations de Qt3 vers Qt4 pour QSocketDevice ne me permettent pas d'y voir plus clair sur une méthode fonctionelle. J'ai trouvé aussi des infos à propos de ACE, une librairie multiplateforme permettant de mettre en place entre autre l'écoute multicast. Je n'ai pas encore regardé de ce coté, sachant que mon code devra IMPERATIVEMENT tourner sur Windows Mobile, et dans le meilleur des cas sur toutes les plateformes supportées par Qt.
    Et comme le bug signalé sur le Bugreport Qt est toujours ouvert et ne semble pas inquiéter grand monde, je désespère de trouver des gens qui auraient rencontré le même cas plus ou moins récemment pour discuter avec eux de leurs éventuelles solutions.

    Cordialement,

    Antoine

  2. #2
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    Je suis loin d'etre un specialiste mais il faut que ton infrastructure reseaux supporte le multicast non ? Tu as des routeurs supportant IGMP ?
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 17
    Par défaut
    Et bien je ne suis pas non plus un spécialiste du réseau, et je ne sais pas exactement si l'infra réseau doit supporter le multicast. Ce qui est sur c'est que celà fonctionne avec d'autres programme.

    Après avoir télécharger les "Developpers Tools for Upnp Technologies", j'ai pu analyser un peu le traffic SSDP / Upnp sur le réseau de ma boite, et le programme "Device Spy" de cette suite d'outils reçoit bien les messages envoyés sur le réseau en multicast.

    Il détecte d'ailleurs bien les messages que j'envoie en multicast avec le code que j'ai collé (1er bloc). Tout ce qu'il me manque c'est la réception des trames avec mon programme...

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/03/2010, 20h31
  2. Environnement graphique et portabilité
    Par viddak dans le forum Linux
    Réponses: 3
    Dernier message: 11/06/2003, 13h57
  3. portabilité d'une interface
    Par marou dans le forum JBuilder
    Réponses: 4
    Dernier message: 21/03/2003, 08h53
  4. Réponses: 11
    Dernier message: 17/03/2003, 10h56
  5. portabilité et BDD
    Par delire8 dans le forum C++Builder
    Réponses: 7
    Dernier message: 04/07/2002, 10h59

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