import java.net.*; import java.io.*; import java.util.*; public class MulticastSenderVideoStream { public static void main(String[] args ) throws Exception { if( args.length != 3 ) { System.err.println("usage: java MulticastSenderVideoStream grupo_multicast porto time-interval") ; System.exit(0) ; } int moreQuotes=20; // change if needed int port = Integer.parseInt( args[1]) ; InetAddress group = InetAddress.getByName( args[0] ) ; int timeinterval = Integer.parseInt( args[2]) ; String msg; if( !group.isMulticastAddress() ) { System.err.println("Multicast address required...") ; System.exit(0) ; } MulticastSocket ms = new MulticastSocket() ; byte[] buffer = new byte[ 65000 ] ; DataInputStream dis = new DataInputStream( new FileInputStream("/tmp/streaming.dat")); boolean finished = false; long qmark0 = 0; long time0 = System.nanoTime(); while ( !finished ) { int size = dis.readShort(); if (size < 0 ) finished = true; else{ long timeStamp = dis.readLong(); dis.readFully( buffer, 0, size ); long timeMeasured = System.nanoTime(); ms.send( new DatagramPacket( buffer, buffer.length, group, port ) ) ; // Thread.sleep(3); Thread.sleep(Math.max(0,((timeStamp - qmark0)-(timeMeasured-time0))/1000000)); } } ms.close(); } }