Skip to content
Snippets Groups Projects
Commit c177a1bb authored by owner's avatar owner
Browse files

Homework 2

parent fc902310
No related branches found
No related tags found
No related merge requests found
......@@ -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");
......
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.");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment