diff --git a/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/pom.xml b/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..ab19a7dddab8ed486ba8793a1791fc19181b7c8d --- /dev/null +++ b/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/pom.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>com.mycompany</groupId> + <artifactId>RoyerHomework2</artifactId> + <version>1.0-SNAPSHOT</version> + <packaging>jar</packaging> + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <maven.compiler.source>12</maven.compiler.source> + <maven.compiler.target>12</maven.compiler.target> + </properties> +</project> \ No newline at end of file diff --git a/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/src/main/java/royer/homework2/TCPPeer.java b/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/src/main/java/royer/homework2/TCPPeer.java new file mode 100644 index 0000000000000000000000000000000000000000..551af66db99130ee6135986082b9f155b32c5bf9 --- /dev/null +++ b/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/src/main/java/royer/homework2/TCPPeer.java @@ -0,0 +1,89 @@ +package royer.homework2; + +import java.net.*; +import java.io.*; +import java.util.concurrent.atomic.AtomicBoolean; + +/** + * + * @author nick + */ +public class TCPPeer { + private ServerSocket server_socket = null; + private Socket client_socket = null; + + private PrintWriter out_stream = null; + private BufferedReader in_stream = null; + + private boolean is_server = true; + + public boolean isServer() { + return is_server; + } + + public TCPPeer(int port, String ip) throws IOException { + is_server = (ip.equals("")); + if (is_server) { + server_socket = new ServerSocket(port); + client_socket = server_socket.accept(); + + } else { + // Client + client_socket = new Socket(ip, port); + } + + in_stream = new BufferedReader(new InputStreamReader(client_socket.getInputStream())); + out_stream = new PrintWriter(client_socket.getOutputStream(), true); + + should_stop.set(false); + + start(); + } + + void start() { + if (is_server) { + while(!should_stop.get()) { + try { + String msg = in_stream.readLine(); + // if (msg == null || msg.equals("")) + // continue; + System.out.println("Server received \"" + msg + "\""); + out_stream.println("OK"); + if (msg.equals("--quit")) + stop_connection(); + } catch (IOException ex) { + + } + } + } + } + + private final AtomicBoolean should_stop = new AtomicBoolean(false); + + public void stop_connection() { + should_stop.set(true); + } + + public TCPPeer(int port) throws IOException { + this(port, ""); + } + + public void close() throws IOException { + System.out.println("Closing " + (is_server ? "Server" : "Client")); + in_stream.close(); + out_stream.close(); + client_socket.close(); + if (is_server) { + server_socket.close(); + } else { + + } + } + + public String send(String msg) throws IOException { + out_stream.println(msg); + String response = in_stream.readLine(); + System.out.println((is_server ? "Server" : "Client") + " sending \"" + msg + "\": " + response); + return response; + } +} diff --git a/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/src/main/java/royer/homework2/Tester.java b/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/src/main/java/royer/homework2/Tester.java new file mode 100644 index 0000000000000000000000000000000000000000..5e3032b01e42866e324d5b7496163c9b490d5cc9 --- /dev/null +++ b/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/src/main/java/royer/homework2/Tester.java @@ -0,0 +1,57 @@ +/* + * 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 royer.homework2; + +import java.io.*; + +/** + * + * @author nick + */ +public class Tester { + + private static class ServerThread extends Thread { + private TCPPeer server = null; + int port = 0; + public ServerThread(int port) { + super(); + this.port = port; + } + + @Override + public void run() { + try { + server = new TCPPeer(port); + server.close(); + Thread.currentThread().interrupt(); + } catch (Exception ioex) { + System.err.println(ioex.toString()); + } + } + } + + public static void main(String[] args) { + + int test_port = 6668; + + try { + System.out.println("Setting up"); + ServerThread st = new ServerThread(test_port); + st.start(); + TCPPeer client = new TCPPeer(test_port, "127.0.0.1"); + System.out.println("Setup complete"); + client.send("Test"); + + client.send("--quit"); + client.close(); + st.join(); + + System.out.println("Done"); + } catch (Exception ex) { + System.err.println(ex.toString()); + } + } +} diff --git a/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/target/classes/royer/homework2/TCPPeer.class b/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/target/classes/royer/homework2/TCPPeer.class new file mode 100644 index 0000000000000000000000000000000000000000..c2a2699cf29f7560a8cdc86cca629210e46a0329 Binary files /dev/null and b/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/target/classes/royer/homework2/TCPPeer.class differ diff --git a/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/target/classes/royer/homework2/Tester$ServerThread.class b/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/target/classes/royer/homework2/Tester$ServerThread.class new file mode 100644 index 0000000000000000000000000000000000000000..29e799fc67d687b5068c5316558acf22a7d6bef4 Binary files /dev/null and b/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/target/classes/royer/homework2/Tester$ServerThread.class differ diff --git a/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/target/classes/royer/homework2/Tester.class b/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/target/classes/royer/homework2/Tester.class new file mode 100644 index 0000000000000000000000000000000000000000..04d5d5f7339a67bb6aa264e0e6284a78940ddf84 Binary files /dev/null and b/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/target/classes/royer/homework2/Tester.class differ diff --git a/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000000000000000000000000000000000000..b8c08f64ab97714bf06250711c33796abc82298b --- /dev/null +++ b/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,2 @@ +royer/homework2/Tester.class +royer/homework2/TCPPeer.class diff --git a/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000000000000000000000000000000000000..a2b22bf32a251d7f87b1e22cba24f76bcf01c678 --- /dev/null +++ b/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/RoyerHomework2/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,2 @@ +/home/nick/Documents/NPS/Quarter 4/MV3500/Homework 2/RoyerHomework2/src/main/java/royer/homework2/Tester.java +/home/nick/Documents/NPS/Quarter 4/MV3500/Homework 2/RoyerHomework2/src/main/java/royer/homework2/TCPPeer.java diff --git a/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/package-info.java b/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/package-info.java new file mode 100644 index 0000000000000000000000000000000000000000..68d490841f110b6dcf4b8986e796b7ccb1edcb5b --- /dev/null +++ b/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/package-info.java @@ -0,0 +1,10 @@ +/** + * ExampleSimpleSimulation program-modification homework assignment supporting the NPS MOVES MV3500 Networked Graphics course. + * + * @see <a href="https://gitlab.nps.edu/Savage/NetworkedGraphicsMV3500/-/tree/master/assignments">networkedGraphicsMV3500 assignments</a> + * @see java.lang.Package + * @see <a href="https://stackoverflow.com/questions/22095487/why-is-package-info-java-useful">StackOverflow: why-is-package-info-java-useful</a> + * @see <a href="https://stackoverflow.com/questions/624422/how-do-i-document-packages-in-java">StackOverflow: how-do-i-document-packages-in-java</a> + */ + +package MV3500Cohort2022MayJune.homework2.Royer; diff --git a/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/readme.md b/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/readme.md new file mode 100644 index 0000000000000000000000000000000000000000..3514d7e2ee780c6214c0851cae3e918db11025da --- /dev/null +++ b/assignments/src/MV3500Cohort2022MayJune/homework1/Royer/readme.md @@ -0,0 +1 @@ +nothing yet