Skip to content
Snippets Groups Projects
Server.java 3.59 KiB
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++;
                    }
                    else if ("paper".equals(serverChoiceStr) & "scissors".equals(clientChoice)){
                        losses++;
                    }
                    else if ("scissors".equals(serverChoiceStr) & "rock".equals(clientChoice)){
                        losses++;
                    }
                    else if ("rock".equals(serverChoiceStr) & "scissors".equals(clientChoice)){
                        wins++;
                    }
                    else if ("scissors".equals(serverChoiceStr) & "paper".equals(clientChoice)){
                        wins++;
                    }
                    else 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!");
            }
        }
    }
}