TP_jmdns

Conception de logiciels Intranet : patrons et canevas

Moderators: douinj, graffiop

Post Reply
berry_ju
Posts: 44
Joined: 30 Sep 2021 15:18

TP_jmdns

Post by berry_ju » 09 May 2022 15:29

Bonjour,

J'ai un problème avec la classe de tests unitaires de la question 1.
Elle mouline sur le socket.joinGroup(address); de la ligne 19 du MulticastReceiver5353.
Toutefois cette classe fonctionne bien quand on lance Sender et Receiver depuis la console.
Quelqu'un a-t-il une idée sur la question ?
Merci d'avance !

berry_ju
Posts: 44
Joined: 30 Sep 2021 15:18

Re: TP_jmdns

Post by berry_ju » 10 May 2022 10:10

Corollaire :
Quand j'exécute l'exemple MulticastSender/Receiver tout bête du cours, je ne reçois pas le message "Hello NSY102 !!".
Soit je ne reçois rien, soit quand il se réveille je reçois quantités de messages en provenance de différents ordinateurs/smartphones/tablettes de mon environnement.
Ces messages me parviennent copieusement agrémentés de hiéroglyphes.
Mais dans aucun des cas je ne reçois le message du MulticastSender.

douinj
Posts: 462
Joined: 18 Mar 2009 15:46

Re: TP_jmdns

Post by douinj » 10 May 2022 10:36

Bonjour,

Utilisez bien deux consoles

Pour ne pas perdre trop de temps avec les caractères de contrôles, une classe de tests ci-après à vérifier (valider)

Bon décodage du flux

Code: Select all

package question1;

import java.io.*;
import java.net.*;

public class MulticastReceiver5353 {
  private static int number = 0;
  
  public static void main(String[] args) throws IOException{
    int number = Integer.parseInt(args[0]);
    byte[] inBuf = new byte[256];
    
    MulticastSocket socket = new MulticastSocket(5353);
    InetAddress address = InetAddress.getByName("224.0.0.251");
    socket.joinGroup(address);
    int inc = 0;
    while (inc < number) {
      DatagramPacket inPacket = new DatagramPacket(inBuf, inBuf.length);
      socket.receive(inPacket);
      inc++;
      
      // voir DNS Packet Structure 
      // http://www.ccs.neu.edu/home/amislove/teaching/cs4700/fall09/handouts/project1-primer.pdf
      int index = 12;
      int size  = inBuf[index];
      //System.out.print("\n" + inc + "\t" + inPacket.getAddress() + "\tQNAME:");
      System.out.print("\n" + inc + "\tQNAME: ");
      while (size>0){
        index++;
        String qname = new String(inBuf,index,size);
        System.out.print(" " + qname);
        index = index + size;
        size = inBuf[index];
      }
  
//       index++;
//       index = index +2; // QTYPE
//       index = index +2; // QCLASS
// 
//  
//       size = inBuf[index];
//       while (size>0){
//         index++;
//         String qname = new String(inBuf,index,size);
//         System.out.print("Depuis " + inPacket.getAddress() + " NAME : " + qname );
//         System.out.println("   " + qname.length());
//         index = index + size;
//         size = inBuf[index];
//       }

      
    }
    socket.close();
  }
  

  // http://www.ccs.neu.edu/home/amislove/teaching/cs4700/fall09/handouts/project1-primer.pdf
  
}


berry_ju
Posts: 44
Joined: 30 Sep 2021 15:18

Re: TP_jmdns

Post by berry_ju » 17 May 2022 14:59

A toute fin utile pour les éventuels auditeurs qui rencontreraient le problème :
J'avais un "multicastlock" dû au fait que ma batterie était paramétrée en mode "optimisation énergétique".
Fallait le savoir...
Pour autant ça ne résout pas complètement tous mes soucis. Pour que l'événement "Service resolved" interviennent, il faut "publier" le service une première fois, le retirer puis le republier...

Post Reply