diff --git a/assignments/src/MV3500Cohort2024JulySeptember/homework2/Timberlake/Client_HW2.java b/assignments/src/MV3500Cohort2024JulySeptember/homework2/Timberlake/Client_HW2.java new file mode 100644 index 0000000000000000000000000000000000000000..7eb81b34a1c8e0c845047514f151377197cd86cc --- /dev/null +++ b/assignments/src/MV3500Cohort2024JulySeptember/homework2/Timberlake/Client_HW2.java @@ -0,0 +1,56 @@ +package MV3500Cohort2024JulySeptember.homework2.Timberlake; + +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetAddress; +import java.util.Scanner; + +/** + * + * @author Jack + */ +public class Client_HW2 { + public static void main(String[] args) { + DatagramSocket socket = null; + Scanner scanner = new Scanner(System.in); + try { + // Create a socket to communicate with the server + socket = new DatagramSocket(); + InetAddress serverAddress = InetAddress.getByName("localhost"); // Server address (localhost for testing) + byte[] sendData = new byte[1024]; // Buffer to store data to send + byte[] receiveData = new byte[1024]; // Buffer to store received data + + System.out.print("Let's play a game!!\n"); + System.out.print("Try guessing a number between 1-100\n"); + while(true) { + System.out.print("Enter your guess: "); + String guess = scanner.nextLine(); //Read user input + sendData = guess.getBytes(); // Convert message to bytes + + // Send guess to the server + DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, serverAddress, 9876); + socket.send(sendPacket); // Send packet to server + + // Receive response from server + DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); + socket.receive(receivePacket); // Blocking call until a packet is received + String response = new String(receivePacket.getData(), 0, receivePacket.getLength()); + System.out.println("Server Said: " + response); // Print received response + + if (response.startsWith ("Good")) { + break; //End the game + } + } + } catch (Exception e) { + e.printStackTrace(); // Print any exceptions that occur + + } finally { + if (scanner != null) { + scanner.close(); // Close scanner + } + if (socket != null && !socket.isClosed()) { + socket.close(); // Close the socket to release resources + } + } + } +} diff --git a/assignments/src/MV3500Cohort2024JulySeptember/homework2/Timberlake/Server_HW2.java b/assignments/src/MV3500Cohort2024JulySeptember/homework2/Timberlake/Server_HW2.java new file mode 100644 index 0000000000000000000000000000000000000000..3d9df86269f2a5b72d39e8845dc6522508f1d80c --- /dev/null +++ b/assignments/src/MV3500Cohort2024JulySeptember/homework2/Timberlake/Server_HW2.java @@ -0,0 +1,72 @@ +package MV3500Cohort2024JulySeptember.homework2.Timberlake; + +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetAddress; +import java.util.Random; + +/** + * + * @author Jack + */ +public class Server_HW2 { + public static void main(String[] args) { + DatagramSocket socket = null; + Random random = new Random(); + int numToGuess = random.nextInt(100) + 1; + //System.out.println("Magic Number Is: " + numToGuess); + + try { + // Create a socket to listen on port 9876 + socket = new DatagramSocket(9876); + byte[] receiveData = new byte[1024]; // Buffer to store incoming data + byte[] sendData = new byte[1024]; // Buffer to store outgoing data + int count = 1; + System.out.println("Server has started, waiting for client..."); + + boolean isRunning = true; + while (isRunning) { + // Receive packet from client + DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); + socket.receive(receivePacket); // Blocking call until a packet is received + + String message = new String(receivePacket.getData(), 0, receivePacket.getLength()); //Receive packet + InetAddress clientAddress = receivePacket.getAddress(); //Save IP for response + int clientPort = receivePacket.getPort(); //Save port for response + + System.out.println("Client sent: " + message); // Print received message + + String response; + try { + int guess = Integer.parseInt(message.trim()); + if (guess < numToGuess) { + response = "Guess Higher"; + count++; + } else if (guess > numToGuess) { + response = "Guess Lower"; + count++; + } else { + response = "Good Job!! That took you " + count + " tries!"; + isRunning = false; + } + } catch (NumberFormatException e) { + response = "Invalid input. Enter a number."; + } + + // Prepare response to client + sendData = response.getBytes(); // Convert response message to bytes + DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, clientAddress, clientPort); + socket.send(sendPacket); // Send response packet to client + + } + } catch (Exception e) { + e.printStackTrace(); // Print any exceptions that occur + } finally { + if (socket != null && !socket.isClosed()) { + socket.close(); // Close the socket to release resources + } + } + } +} + +