From 89eab05e69ac76498c229d53a2a6ffb737842da0 Mon Sep 17 00:00:00 2001
From: tjsus <tjsus@172.20.148.67>
Date: Thu, 8 Aug 2024 11:33:42 -0700
Subject: [PATCH] Assignment 2

---
 .../homework2/Smith/Client.java               | 69 +++++++++++++++
 .../homework2/Smith/Server.java               | 87 +++++++++++++++++++
 2 files changed, 156 insertions(+)
 create mode 100644 assignments/src/MV3500Cohort2024JulySeptember/homework2/Smith/Client.java
 create mode 100644 assignments/src/MV3500Cohort2024JulySeptember/homework2/Smith/Server.java

diff --git a/assignments/src/MV3500Cohort2024JulySeptember/homework2/Smith/Client.java b/assignments/src/MV3500Cohort2024JulySeptember/homework2/Smith/Client.java
new file mode 100644
index 0000000000..e96f8f8cb3
--- /dev/null
+++ b/assignments/src/MV3500Cohort2024JulySeptember/homework2/Smith/Client.java
@@ -0,0 +1,69 @@
+package MV3500Cohort2024JulySeptember.homework2.Smith;
+
+import java.io.*;
+import java.net.*;
+import java.util.Scanner;
+
+public class Client {
+    public Client() {
+        // default constructor
+    }
+
+    public final static String LOCALHOST = "0:0:0:0:0:0:0:1";
+
+    public static void main(String[] args) {
+        Socket socket = null;
+        InputStream is;
+        Reader isr;
+        BufferedReader br;
+        PrintWriter pw;
+        String serverMessage;
+        int clientLoopCount = 0;
+
+        Scanner scanner = new Scanner(System.in);
+
+        try {
+            while (true) {
+                clientLoopCount++;
+                System.out.println(Client.class.getName() + " creating socket...");
+
+                socket = new Socket(LOCALHOST, 2317);
+
+                System.out.println("Enter your choice (rock, paper, or scissors):");
+                String choice = scanner.nextLine().trim().toLowerCase();
+
+                // Send the choice to the server
+                pw = new PrintWriter(socket.getOutputStream(), true);
+                pw.println(choice);
+
+                is = socket.getInputStream();
+                isr = new InputStreamReader(is);
+                br = new BufferedReader(isr);
+
+                serverMessage = br.readLine();
+                System.out.println("==================================================");
+
+                System.out.println("The message the server sent was: '" + serverMessage + "'");
+
+                Thread.sleep(500L);
+            }
+        } catch (IOException | InterruptedException e) {
+            System.err.println("Problem with " + Client.class.getName() + " networking:");
+            System.err.println("Error: " + e);
+
+            if (e instanceof java.net.BindException) {
+                System.err.println("*** Be sure to stop any other running instances of programs using this port!");
+            }
+        } finally {
+            try {
+                if (socket != null)
+                    socket.close();
+            } catch (IOException e) {
+                System.err.println("Error closing socket: " + e);
+            }
+
+            System.out.println();
+            System.out.println(Client.class.getName() + " exit");
+        }
+    }
+}
diff --git a/assignments/src/MV3500Cohort2024JulySeptember/homework2/Smith/Server.java b/assignments/src/MV3500Cohort2024JulySeptember/homework2/Smith/Server.java
new file mode 100644
index 0000000000..13a6973e4f
--- /dev/null
+++ b/assignments/src/MV3500Cohort2024JulySeptember/homework2/Smith/Server.java
@@ -0,0 +1,87 @@
+package MV3500Cohort2024JulySeptember.homework2.Smith;
+
+import java.io.*;
+import java.net.*;
+import java.util.Random;
+
+public class Server {
+    private static int runningTotal = 0; // Initialize running total
+
+    public Server() {
+        // default constructor
+    }
+
+    public static void main(String[] args) {
+        try {
+            System.out.println(Server.class.getName() + " has started...");
+            ServerSocket serverSocket = new ServerSocket(2317);
+            OutputStream os;
+            PrintStream ps;
+            InetAddress localAddress, remoteAddress;
+            int localPort, remotePort;
+            int wins = 0;
+            int losses = 0;
+
+            while (true) {
+                try (Socket clientConnectionSocket = serverSocket.accept()) {
+                    os = clientConnectionSocket.getOutputStream();
+                    ps = new PrintStream(os);
+
+                    // Read the number sent by the client
+                    BufferedReader br = new BufferedReader(new InputStreamReader(clientConnectionSocket.getInputStream()));
+                    String clientChoice = br.readLine();
+                    
+                    Random rand = new Random();
+                    int serverChoiceInt = rand.nextInt(0,3);
+                    String serverChoiceStr;
+                    
+                    serverChoiceStr = switch (serverChoiceInt) {
+                        case 0 -> "rock";
+                        case 1 -> "paper";
+                        case 2 -> "scissors";
+                        default -> "Error";
+                    };
+                    
+                    
+                    if ("rock".equals(serverChoiceStr) & "paper".equals(clientChoice)){
+                        losses++;
+                    }
+                    if ("paper".equals(serverChoiceStr) & "scissors".equals(clientChoice)){
+                        losses++;
+                    }
+                    if ("scissors".equals(serverChoiceStr) & "rock".equals(clientChoice)){
+                        losses++;
+                    }
+                    if ("rock".equals(serverChoiceStr) & "scissors".equals(clientChoice)){
+                        wins++;
+                    }
+                    if ("scissors".equals(serverChoiceStr) & "paper".equals(clientChoice)){
+                        wins++;
+                    }
+                    if ("paper".equals(serverChoiceStr) & "rock".equals(clientChoice)){
+                        wins++;
+                    }
+
+                    // Send back the updated total
+                    ps.println("Client chose: " + clientChoice + "/ Server Chose: "+ serverChoiceStr + "/ Wins: "+wins+"/ loses: "+ losses);
+                    ps.println("Please wait for server to choose");
+                    
+                    System.out.println("Client chose: " + clientChoice);
+
+                    localAddress = clientConnectionSocket.getLocalAddress();
+                    remoteAddress = clientConnectionSocket.getInetAddress();
+                    localPort = clientConnectionSocket.getLocalPort();
+                    remotePort = clientConnectionSocket.getPort();
+                  
+                    ps.flush();
+                }
+            }
+        } catch (IOException e) {
+            System.err.println("Problem with " + Server.class.getName() + " networking: " + e);
+
+            if (e instanceof java.net.BindException) {
+                System.err.println("*** Be sure to stop any other running instances of programs using this port!");
+            }
+        }
+    }
+}
\ No newline at end of file
-- 
GitLab