//File: ABWPlot.java //Project: ABMT //Version: 0.1 //Designer: C. Edward Chow //Revision: // 2/14/2001 C. Edward Chow //Bug Report: send to chow@cs.uccs.edu //Description: Plotting Program for Internet Network Probing Research // Main class of ABWPlot // // copyright@2001, University of Colorado at Coloraod Springs // unlimited distribution for academic research and education // for commercial usage, please check with C. Edward Chow // import javax.swing.UIManager; import java.awt.*; import java.net.*; import java.io.*; public class ABWPlot { boolean packFrame = false; private DatagramSocket socket; private DatagramPacket receivePacket; private double time1; private boolean first; //Construct the application PlotProbingResults frame; public ABWPlot() { frame = new PlotProbingResults(0, 1E7, 0.1, 10); first = true; //Validate frames that have preset sizes //Pack frames that have useful preferred size info, e.g. from their layout if (packFrame) frame.pack(); else frame.validate(); //Center the window //Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); //Dimension frameSize = frame.getSize(); //if (frameSize.height > screenSize.height) // frameSize.height = screenSize.height; //if (frameSize.width > screenSize.width) // frameSize.width = screenSize.width; frame.setLocation(0,0); frame.setSize(680,700); frame.setVisible(true); try { socket = new DatagramSocket(7000); } catch (SocketException se) { se.printStackTrace(); System.exit(1); } } public void waitForPackets() { double relativeTime; while (true) { // set up packet byte data[] = new byte[20]; receivePacket = new DatagramPacket(data, data.length); // wait for packet try { socket.receive(receivePacket); } catch (IOException io) { io.printStackTrace(); System.exit(1); } byte[] r = receivePacket.getData(); int id = r[3]; double time = (((r[4]*256+r[5])*256)+r[6])*256+r[7]; time += ((((r[8]*256+r[9])*256)+r[10])*256+r[11])*0.000001; if (first) { time1= time; relativeTime = 0; } else { if (time1 < time) { time1 = time; relativeTime = 0; } else { relativeTime = time1 - time1; //get relative time } } double bw = (((r[12]*256+r[13])*256)+r[14])*256+r[15]; System.out.println("id="+id+" time="+time+" relativeTime="+relativeTime+" bw="+bw); if (id == 1) { frame.c1.updateProbingData(relativeTime, bw); } if (id == 0) { frame.c1.updateABW(relativeTime, bw); } } } //Main method public static void main(String[] args) { try { //UIManager.setLookAndFeel(new com.sun.java.swing.plaf.windows.WindowsLookAndFeel()); //UIManager.setLookAndFeel(new com.sun.java.swing.plaf.motif.MotifLookAndFeel()); //UIManager.setLookAndFeel(new com.sun.java.swing.plaf.metal.MetalLookAndFeel()); } catch (Exception e) { } ABWPlot n = new ABWPlot(); /* int j=0; for (int i=0; i<1000000; i++) { n.frame.c1.updateProbingData(i, 1000000*Math.sin(i/10)+5000000); for (int k=0; k<100000; k++) { j++;}; n.frame.c1.updateABW(i, 1000000*Math.cos(0.1*i)+5000000); for (int k=0; k<100000; k++) { j++;}; n.frame.c1.updateABW2(i, 1000000*Math.cos(0.1*i)+4000000+1000000*Math.sin(0.1*i)); if (i%100 == 99) { n.frame.c1.redisplayPlot(0, 1E7, i-50, 5); } } */ } }