package MV3500Cohort2020JulySeptember.homework1; import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; /** * Simple TCP Telnet Server, MV3500 Homework 1 * copied parts from: TcpExample1Telnet.java by @author mcgredo and @author brutzman * @version 07/16/2020 * @author Loki */ public class WeissenbergerTcpExample1Telnet { 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); // Use Java io classes to write text (as opposed to // unknown bytes of some sort) to the client // The Socket object represents the connection between // the server and client, including a full duplex connection try (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 Loki's server TcpExample1."); // to remote clientnc ps.println(" _ _ _"+"\r\n"+"| | | | (_)"+"\r\n"+"| | ___ | | ___"+"\r\n"+"| |/ _ \\| |/ / |"+"\r\n"+"| | (_) | <| |"+"\r\n"+"|_|\\___/|_|\\_\\_|"); System.out.println("This server response was written by Loki's server TcpExample1."); // to server console System.out.println(" _ _ _"+"\n"+"| | | | (_)"+"\n"+"| | ___ | | ___"+"\n"+"| |/ _ \\| |/ / |"+"\n"+"| | (_) | <| |"+"\n"+"|_|\\___/|_|\\_\\_|"); // "flush()" in important in that it forces a write // across what is in fact a slow connection ps.flush(); } System.out.println("TcpExample1 completed successfully."); } catch(IOException e) { System.err.println("Problem with TcpExample1Telnet networking:"); // describe what is happening System.err.println("Error: " + e); // Provide more helpful information to user if exception occurs due to 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.err.println("*** Be sure to stop any other running instances of programs using this port!"); } } }