From bfe71aba918f3bc7609b9ad7f01f06a610dd19ae Mon Sep 17 00:00:00 2001 From: brutzman <brutzman@nps.edu> Date: Sun, 18 Feb 2018 13:20:16 -0800 Subject: [PATCH] Homework 1 submission with refactor/rename to have student name first --- .../homework1/MaroonHomework1UML.pptx | Bin 0 -> 39925 bytes .../homework1/MaroonTcpClient.java | 62 +++++++++++++ .../homework1/MaroonTcpServer.java | 86 ++++++++++++++++++ .../Assignments/homework1/MaroonUnit.java | 43 +++++++++ 4 files changed, 191 insertions(+) create mode 100644 projects/Assignments/homework1/MaroonHomework1UML.pptx create mode 100644 projects/Assignments/homework1/MaroonTcpClient.java create mode 100644 projects/Assignments/homework1/MaroonTcpServer.java create mode 100644 projects/Assignments/homework1/MaroonUnit.java diff --git a/projects/Assignments/homework1/MaroonHomework1UML.pptx b/projects/Assignments/homework1/MaroonHomework1UML.pptx new file mode 100644 index 0000000000000000000000000000000000000000..2d92f878296ebf46e4e039d9b84157254780b1d6 GIT binary patch literal 39925 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 AH~;_u literal 0 HcmV?d00001 diff --git a/projects/Assignments/homework1/MaroonTcpClient.java b/projects/Assignments/homework1/MaroonTcpClient.java new file mode 100644 index 0000000000..1c965bd153 --- /dev/null +++ b/projects/Assignments/homework1/MaroonTcpClient.java @@ -0,0 +1,62 @@ + +package tcpclient; + +import java.io.*; +import java.net.*; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.net.Socket; +import java.util.Scanner; + +/** + * Before, we always used telnet to connect to the server. We + * are now writing our own program to do the connection. + * + * As you will see, when we run this after we start the server + * we will see the same string telnet printed, sent by the server. + * The output at the server will show different socket pairs for + * each time we ran it. + * + * @author mcgredo + */ +public class MaroonTcpClient { + + public static DataInputStream input; + public static DataOutputStream output; + + + + public static void main(String[] args) + { + Scanner userInput = new Scanner(System.in); + try + { + System.out.println("creating socket"); + Socket socket = new Socket("localhost", 2317); + + input = new DataInputStream(socket.getInputStream()); + output = new DataOutputStream(socket.getOutputStream()); + + + + System.out.println("Type position or ID: \n "); + String request; + request = userInput.nextLine(); + output.writeUTF(request); + + String reply; + reply = input.readUTF(); + System.out.println(reply); + + + } + catch(Exception e) + { + System.out.println(e); + System.out.println("Problem with client"); + } + + } + +} diff --git a/projects/Assignments/homework1/MaroonTcpServer.java b/projects/Assignments/homework1/MaroonTcpServer.java new file mode 100644 index 0000000000..5835f592b4 --- /dev/null +++ b/projects/Assignments/homework1/MaroonTcpServer.java @@ -0,0 +1,86 @@ +package tcpserver; + +import java.io.*; +import java.net.*; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.net.ServerSocket; +import java.net.Socket; +import java.util.Arrays; + +/** + * Very slightly more complex than example1. A complete copy of + * example 2. The only thing this does + * differently is introduce a loop into the response, so you don't + * have to restart the program after one response. Also, it prints + * out the socket pair the server sees. Run the program via telnet + * several times and compare the socket pairs. + * + * telnet localhost 2317 + * + * If you're sophisticated you can contact the instructor's computer + * while running this program. + * + * telnet <ipOfServersLaptop> 2317 + * + * And have him display the socket pairs he got. + * @author mcgredo + */ +public class MaroonTcpServer +{ + + public static DataInputStream input; + public static DataOutputStream output; + + + public static void main(String[] args) + { + + MaroonUnit testUnit1 = new MaroonUnit (); + + try + { + // ServerSocket waits for a connection from a client. + // Notice that it is outside the loop; ServerSocket + // needs to be made only once. + + ServerSocket serverSocket = new ServerSocket(2317); + + // Loop, infinitely, waiting for client connections. + // Stop the program somewhere else. + while(true) + { + Socket clientConnection = serverSocket.accept(); + //OutputStream os = clientConnection.getOutputStream(); + input = new DataInputStream(clientConnection.getInputStream()); + output = new DataOutputStream(clientConnection.getOutputStream()); + + String request = input.readUTF(); + + if ("position".equals(request)){ + output.writeUTF(Arrays.toString(testUnit1.getPosition())); + } + else if ("ID".equals(request)){ + output.writeUTF(""+ testUnit1.getID()); + + }else + output.writeUTF("I don't understand, try www.google.com"); + + + // Notice the use of flush() and close(). Without + // the close() to Socket object may stay open for + // a while after the client has stopped needing this + // connection. Close() explicitly ends the connection. + + clientConnection.close(); + } + } + catch(Exception e) + { + System.out.println("problem with networking"); + } + + } + +} \ No newline at end of file diff --git a/projects/Assignments/homework1/MaroonUnit.java b/projects/Assignments/homework1/MaroonUnit.java new file mode 100644 index 0000000000..a9737e197f --- /dev/null +++ b/projects/Assignments/homework1/MaroonUnit.java @@ -0,0 +1,43 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package tcpserver; + +/** + * + * @author Kens + */ +class MaroonUnit { + + private int[] position = new int[3]; + private int ID; + + MaroonUnit() { + this.position[0] = 0; + this.position[1] = 0; + this.position[2] = 0; + + this.ID = 50; + + } + + MaroonUnit(int x, int y, int z, int id){ + this.position[0] = x; + this.position[1] = y; + this.position[2] = z; + + this.ID = id; + } + + int getID(){ + return this.ID; + } + + int [] getPosition(){ + return this.position; + } + + +} -- GitLab