Rev 186 | Rev 189 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
/******************************************************************************** File: P1Client.java* Author: Ira W. Snyder (devel@irasnyder.com)* Class: CS380 - Computer Networking** Assignment: Project #1* Date Last Modified: 2006-01-18** Purpose: Opens a connection to a server running on port 1337 on the* local machine. Sends 10 1024 Byte payloads to the server,* measuring the time it takes to recieve them back.* It uses this data to calculate the RTT between the applications.*******************************************************************************/import java.io.*;import java.net.*;import java.util.Date;public class P1Client{public static final String exitSeq = "QUIT";public static final String hostName = "localhost";public static final int portNumber = 1337;public static final int numPackets = 200000;public static final int packetSize = 1024;private static Date startTime;private static Date stopTime;public static void main (String[] args) throws IOException{Socket sendSocket = null;PrintWriter out = null;BufferedReader in = null;try{sendSocket = new Socket (hostName, portNumber);out = new PrintWriter (sendSocket.getOutputStream(), true);in = new BufferedReader (new InputStreamReader(sendSocket.getInputStream()));}catch (UnknownHostException e){System.err.println ("Can't resolve hostname: " + hostName);System.exit(1);}catch (IOException e){System.err.println ("Couldn't get I/O for " +"the connection to: " + hostName);System.exit(1);}String packet = generatePacket (packetSize);String response = new String();int i = 0;/* Start the timer */startTime = new Date();for (i=0; i<numPackets; i++){out.println (packet);response = in.readLine();}/* Stop the timer */stopTime = new Date();/* Calculate and print all timing info */printTimingInfo(startTime, stopTime);/* Cleanup */out.close();in.close();sendSocket.close();}public static String generatePacket (int size){String packet = new String();int i = 0;for (i=0; i<size; i++)packet += "Z";return packet;}public static void printTimingInfo (Date startTime, Date stopTime){long totalTime = (stopTime.getTime() - startTime.getTime());double rtt = (double)totalTime / (double)numPackets;double totalBytes = (double)packetSize * (double)numPackets;double bw = totalBytes / (double)totalTime * (double)1000.0 /* ms */;System.out.println ("Time for " + numPackets + " packets (millisec): "+ totalTime);System.out.println ("RTT per packet: " + rtt);System.out.println ("Total Bandwidth: " + bw + " Bytes / sec");}}