From c177a1bb65f239d0a6ace32e8c902cc943541343 Mon Sep 17 00:00:00 2001 From: owner <owner@DESKTOP-150HAJJ.ern.nps.edu> Date: Thu, 8 Aug 2024 16:59:00 -0700 Subject: [PATCH] Homework 2 --- .../homework2/Lennon/LennonHW2Client.java | 41 ++++++++++++++++--- .../Lennon/LennonHW2HandlerThread.java | 21 +++++++++- 2 files changed, 54 insertions(+), 8 deletions(-) diff --git a/assignments/src/MV3500Cohort2024JulySeptember/homework2/Lennon/LennonHW2Client.java b/assignments/src/MV3500Cohort2024JulySeptember/homework2/Lennon/LennonHW2Client.java index 80cf6a753c..de4a93dd00 100644 --- a/assignments/src/MV3500Cohort2024JulySeptember/homework2/Lennon/LennonHW2Client.java +++ b/assignments/src/MV3500Cohort2024JulySeptember/homework2/Lennon/LennonHW2Client.java @@ -68,18 +68,47 @@ public class LennonHW2Client BufferedReader br = new BufferedReader(isr); String serverMessage = br.readLine(); // blocks - long readTime = System.currentTimeMillis(); - long timeLength = readTime - startTime; + System.out.println("Message from server:" + serverMessage); + String guess = null; + boolean validGuess = false; + while(!validGuess){ + guess = scanner.nextLine(); + try{ + int numGuess = Integer.parseInt(guess); + if (numGuess < 1 || numGuess > 10){ + System.out.println("I said between 1 and 10. Guess Again"); + continue; + } + validGuess = true; + } + catch(NumberFormatException e){ + System.out.println("That's not a number. Guess Again"); + } + } + OutputStream os = socket.getOutputStream(); + PrintStream ps = new PrintStream(os); + + ps.println(guess); + ps.flush(); + + is = socket.getInputStream(); + isr = new InputStreamReader(is); + br = new BufferedReader(isr); - System.out.println(LennonHW2Client.class.getName() + ": message received from server='" + serverMessage + "'"); - System.out.println(LennonHW2Client.class.getName() + ": time msec required for read=" + timeLength); + serverMessage = br.readLine(); // blocks + long endTime = System.currentTimeMillis(); + long timeLength = endTime - startTime; + + System.out.println(": message received from server:" + serverMessage); + System.out.println(": time to play=" + timeLength); System.out.println("======================================================="); - // To push this further, launch multiple copies of TcpExample4Client simultaneously + System.out.println("Want to go again? Y/N"); String response = scanner.nextLine(); play = "Y".equals(response.toUpperCase()); - System.out.println(response.toUpperCase()); + //line below is for debug + System.out.println(response.toUpperCase()); //for debug only. delete later }while(play); System.out.println("GOODBYE"); System.out.println(LennonHW2Client.class.getName() + " complete"); diff --git a/assignments/src/MV3500Cohort2024JulySeptember/homework2/Lennon/LennonHW2HandlerThread.java b/assignments/src/MV3500Cohort2024JulySeptember/homework2/Lennon/LennonHW2HandlerThread.java index 6fa0180d2f..2bdad4bfc1 100644 --- a/assignments/src/MV3500Cohort2024JulySeptember/homework2/Lennon/LennonHW2HandlerThread.java +++ b/assignments/src/MV3500Cohort2024JulySeptember/homework2/Lennon/LennonHW2HandlerThread.java @@ -1,7 +1,10 @@ package MV3500Cohort2024JulySeptember.homework2.Lennon; +import TcpExamples.TcpExample4Client; +import TcpExamples.TcpExample4DispatchServer; import java.io.*; import java.net.*; +import java.util.Random; /** * <p> @@ -64,6 +67,9 @@ public class LennonHW2HandlerThread extends Thread System.out.println(LennonHW2HandlerThread.class.getName() + " starting to handle a thread..."); // get the connection output stream, then wait a period of time. + Random random = new Random(); + int randNum = random.nextInt(10)+1; + OutputStream os = socket.getOutputStream(); PrintStream ps = new PrintStream(os); @@ -75,14 +81,25 @@ public class LennonHW2HandlerThread extends Thread BufferedReader br = new BufferedReader(isr); String userGuess = br.readLine(); // blocks - + String serverResponse = null; + try{ + int userNum = Integer.parseInt(userGuess); + if (userNum == randNum){ + serverResponse = "Good job. You got it."; + }else{ + serverResponse = "You're wrong. It was " + randNum; + } + }catch(NumberFormatException e){ + System.out.println("Something went wrong. guess was not a number" + e); + serverResponse = "Something went wrong. Anyway, my number was " + randNum; + } final long TIMEOUT = 2000; // 2000 milliseconds = 2 seconds, 10000 milliseconds = 10 seconds System.out.println(LennonHW2HandlerThread.class.getName() + " pausing for TIMEOUT=" + TIMEOUT + "ms" + " to emulate computation and avoid server-side overload"); Thread.sleep(TIMEOUT); // ps is the PrintStream is the Java way to use System.print() to pass data along the socket. - ps.println("That's a good guess, but you're wrong" + LennonHW2HandlerThread.class.getName()); // TODO insert socket count here! + ps.println(serverResponse + LennonHW2HandlerThread.class.getName()); // TODO insert socket count here! ps.flush(); // make sure that it indeed escapes current process and reaches the client socket.close(); // all clear, no longer need socket System.out.println(LennonHW2HandlerThread.class.getName() + " finished handling a thread, now exit."); -- GitLab