package org.process; import java.io.IOException; import java.net.DatagramPacket; import java.net.InetAddress; import java.net.MulticastSocket; import java.net.SocketException; import org.job.graphique.StaticIhm; import org.structure.Struct_ContentMessage; public class ReceptionMultiCast extends Thread{ StaticIhm staticIHm; InetAddress groupMutliCast; int portMultiCast; String nameMultiCast; int sizeMessage; String typeEndian; MulticastSocket socketReceptMultiCast; byte[] buffer; TransformStringHexa tabContentMsg; int numberMessage; /** * Constructeur de classe */ public ReceptionMultiCast(StaticIhm _staticIHm, InetAddress _groupMutliCast, int _portMultiCast, String _nameMultiCast, int _sizeMessage, String _typeEndian) { System.out.println("Creation de la socket..."); staticIHm = _staticIHm; groupMutliCast = _groupMutliCast; portMultiCast = _portMultiCast; nameMultiCast = _nameMultiCast; sizeMessage = _sizeMessage; typeEndian = _typeEndian; try { socketReceptMultiCast = new MulticastSocket(portMultiCast); socketReceptMultiCast.joinGroup(groupMutliCast); buffer = new byte[sizeMessage]; } catch (IOException e) { e.printStackTrace(); } // Augmentation du buffer en reception try { socketReceptMultiCast.setReceiveBufferSize(socketReceptMultiCast.getReceiveBufferSize()*3); //System.out.println("Taille buffer en reception: "+socketReceptMultiCast.getReceiveBufferSize()); } catch (SocketException e) { e.printStackTrace(); } start(); } public void run() { while (true) { try { System.out.println("En ecoute..."); DatagramPacket datagramPacketMsg = new DatagramPacket(buffer, buffer.length); socketReceptMultiCast.receive(datagramPacketMsg); // Remplissage de la liste avec les donnees ecrites dans le modele Struct_ContentMessage dataContentMsg = new Struct_ContentMessage(staticIHm.getIndexListStructContentMessage(), nameMultiCast, datagramPacketMsg.getLength(), datagramPacketMsg.getData(), typeEndian); staticIHm.getListDataContentMsg().add(dataContentMsg); System.out.println("classe: "+dataContentMsg.getNumber()+" "+bytArrayToHex(dataContentMsg.getDataContentMessage())); System.out.println("liste: "+staticIHm.getListDataContentMsg().get(0).getNumber()+" "+bytArrayToHex(staticIHm.getListDataContentMsg().get(0).getDataContentMessage())); staticIHm.addIndexListStructContentMessage(); } catch(Exception exc) { exc.printStackTrace(); } } } String bytArrayToHex(byte[] _tabByteData) { StringBuilder stringBuilder = new StringBuilder(); for(byte byteData: _tabByteData) stringBuilder.append(String.format("%02x", byteData&0xff)); return stringBuilder.toString().toUpperCase(); } }