import java.io.*; import java.net.*; public class ReceiveMulticast implements Runnable { private int multiport; ///port used for point-to-point messaage transmission private MulticastSocket multisocket; private InetAddress address; byte[] buf; DatagramPacket recv; DataTC dtc; public ReceiveMulticast(DataTC dtc) { try { this.multiport=2222;//multicast listen port address =InetAddress.getByName("225.0.0.15"); multisocket = new MulticastSocket(multiport); multisocket.joinGroup(address); this.dtc=dtc; // buf = new byte[1000]; // recv=new DatagramPacket(buf,buf.length); IPMap.init(); ///instantiates the tabel that contains ip and port } catch(Exception e) { System.out.println("Error in ReceiveMulticast :" + e); } } public void run() { while(true) { try { buf = new byte[1000]; recv=new DatagramPacket(buf,buf.length); //think abt timeout //System.out.println("receive!"); multisocket.receive(recv); //System.out.println("Packet received"); ByteArrayInputStream byteStream = new ByteArrayInputStream(buf); ObjectInputStream is = new ObjectInputStream(new BufferedInputStream(byteStream)); Message m = (Message)is.readObject(); IPMap.updateIP(""+m.getmessagesource(),""+recv.getPort()+"/ "+recv.getAddress()); // System.out.println("herte"); dtc.Produce(m); is.close(); //System.out.println(DataSR_comm.IPPMapper); //multisocket.close(); } catch(Exception e) { System.out.println("IS this the error"+e); } } } }