package TcpExamples; import java.io.*; import java.net.*; //import java.time.LocalTime; // conversion? /** * This client program establishes a socket connection to the dispatch server, * then checks how long it takes to read the single line it expects. * * @author Don McGregor * @author Don Brutzman * @author MV3500 class */ public class TcpExample4Client { /** Default constructor */ public TcpExample4Client() { // default constructor } static String DESTINATION_HOST = "localhost"; static int MAX_LOOP_COUNT = 4; /** * Program invocation, execution starts here * @param args command-line arguments */ public static void main(String[] args) { try { System.out.println(TcpExample4Client.class.getName() + " start, loop " + MAX_LOOP_COUNT + " times"); System.out.println("=================================================="); for (int loopCount = 1; loopCount <= MAX_LOOP_COUNT; loopCount++) // loop then exit { System.out.println(TcpExample4Client.class.getName() + " creating socket #" + loopCount + "..."); // We request an IP to connect to ("localhost") and // port number at that IP (2317). This establishes // a connection to that IP in the form of the Socket // object; the server uses a ServerSocket to wait for // connections.This particualar example is interacting // with what it expects is a server that writes a single text // line after 10 sec. long startTime = System.currentTimeMillis(); // open a socket for each loop Socket socket = new Socket(DESTINATION_HOST, 2317); // Setup. Read the single line written by the server. // We'd do things a bit differently if many lines to be read // from the server, instead of one only. InputStream is = socket.getInputStream(); Reader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String serverMessage = br.readLine(); // blocks long readTime = System.currentTimeMillis(); long timeLength = readTime - startTime; System.out.println(TcpExample4Client.class.getName() + ": message received from server='" + serverMessage + "'"); System.out.println(TcpExample4Client.class.getName() + ": time msec required for read=" + timeLength); System.out.println("=================================================="); // To push this further, launch multiple copies of TcpExample4Client simultaneously } System.out.println(TcpExample4Client.class.getName() + " complete"); // main method now exits } catch (IOException e) { System.out.println("Problem with " + TcpExample4Client.class.getName() + " networking:networking:"); // describe what is happening System.out.println("Error: " + e); // Provide more helpful information to user if exception occurs due to running twice at one time if (e instanceof java.net.BindException) { System.out.println("*** Be sure to stop any other running instances of programs using this port!"); } } } }