From 4a1a9beb75ae2b6d579b9e4ae1e29795ba0a05ce Mon Sep 17 00:00:00 2001
From: chris <chris@10.0.0.236>
Date: Wed, 22 Jul 2020 11:04:00 -0700
Subject: [PATCH] Cannon HW 1

---
 .../homework1/CannonTcpExample1Telnet.java    | 61 +++++++++++++++++++
 1 file changed, 61 insertions(+)
 create mode 100644 assignments/src/MV3500Cohort2020JulySeptember/homework1/CannonTcpExample1Telnet.java

diff --git a/assignments/src/MV3500Cohort2020JulySeptember/homework1/CannonTcpExample1Telnet.java b/assignments/src/MV3500Cohort2020JulySeptember/homework1/CannonTcpExample1Telnet.java
new file mode 100644
index 0000000000..86eb9df7c3
--- /dev/null
+++ b/assignments/src/MV3500Cohort2020JulySeptember/homework1/CannonTcpExample1Telnet.java
@@ -0,0 +1,61 @@
+package MV3500Cohort2020JulySeptember.homework1;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+/**
+ * Class MV30500
+ * Homework 1 that demonstrates how to connect to a TCP telnet server
+ * @author chris
+ */
+public class CannonTcpExample1Telnet {
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String[] args) {
+        try {
+            System.out.println("TcpExample1Telnet has started and is waiting for a connection.");
+            System.out.println("  help: https://savage.nps.edu/Savage/developers.html#telnet");
+            System.out.println("  enter (telnet localhost 2317) or (nc localhost 2317)...");
+
+            // The ServerSocket waits for a connection from a client.
+            // It returns a Socket object when the connection occurs.
+            ServerSocket serverSocket = new ServerSocket(2317);
+
+            // The Socket object represents the connection between
+            // the server and client, including a full duplex connection
+            Socket clientConnection = serverSocket.accept();
+
+            // Use Java io classes to write text (as opposed to
+            // unknown bytes of some sort) to the client
+            OutputStream os = clientConnection.getOutputStream();
+            PrintStream ps = new PrintStream(os);
+
+            ps.println("This client response was written by Captain Christopher Cannon."); // to remote clientnc
+            System.out.println("This server response was written by Captain Christopher Cannon."); // to server console
+            
+            
+            
+            // "flush()" in important in that it forces a write 
+            // across what is in fact a slow connection
+            ps.flush();
+
+            clientConnection.close();
+            System.out.println("TcpExample1 completed successfully.");
+        } catch (IOException e) {
+            System.out.println("problem with networking: " + e);
+
+            // Program modification: provide more helpful information to user if
+            // exception occurs when running twice at one time
+            // brute force exception checking, can be brittle if exception message changes
+            // if (e.getMessage().equals("Address already in use: NET_Bind")) 
+            if (e instanceof java.net.BindException) {
+                System.out.println("Be sure to stop any other running instances of this program!");
+            }
+        }
+    }
+}
-- 
GitLab