Something went wrong on our end
-
Brutzman, Don authoredBrutzman, Don authored
ThomersonAssignment1.java 5.09 KiB
/*
* 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 MV3500Cohort2018JulySeptember.homework1;
import java.io.*;
import java.net.*;
/**
* =======MODIFICATIONS==============
*
* (A) Examples 1 and 2 were combined into this document manually and the comments on
* each line of code were modified so I could understand what each line of code was
* responsible for.
*
* (B) The NetBean outputs were changed to show each step of the process and clearly
* depict exactly what is going on in the code.
*
* (C) The while loop will stop the program after 5 connections.
*/
/**
* The simplest possible TCP network program. It listens for
* a connection, from telnet (telnet localhost 2317) or a program
* you write, which we will do later. Right now the TcpExample simply
* writes a string in response to a connection.
*
* Testing the running server program from telnet looks like this:
*
* it154916:projects mcgredo$ telnet localhost 2317
* Trying ::1...
* Connected to localhost.
* Escape character is '^]'.
* This was written by the server
* Connection closed by foreign host.
*
* Notice that "This was written by the server" matches
* what is written by the code below, over the output stream.
*
* After this first connection the program below drops out
* the bottom of the program, and does not repeat itself.
* The program exits.
*
* @author courtneythomerson
*/
public class ThomersonAssignment1
{
/**
* Default constructor to silence javadoc warning
* @see <a href="https://stackoverflow.com/questions/4488716/java-default-constructor" target="_blank">StackOverflow: Java default constructor</a>
*/
public ThomersonAssignment1 ()
{
// default initializations
}
/** run the program
* @param args command-line arguments, string parameters (unused) */
public static void main(String[] args) {
try
{
// NETBEANS IS THE SERVER.
// Create a new ServerSocket with the input 2317 in the constructor.
// SERVER SOCKET is the socket the client will connect to
// ServerSocket needs to be made only once
ServerSocket serverSocket = new ServerSocket(2317);
//Count how many connections have been made
int connectionCount = 0;
while(connectionCount < 5){
// The Socket object represents the connection between
// the server and client, including a full duplex
// connection (.accept() is a blocking method)
Socket clientConnection = serverSocket.accept();
//Once a client has been excepted iterate the connectionCount
connectionCount += 1;
// 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);
//Confirm the connection on both sides through NetBeans
ps.println("This is the server (NetBeans) writting to the client (Terminal)"); // to remote client
System.out.println("This is the server (NetBeans) confirming the connection with the client (Terminal)"); // to server console
//NetBeans tells the client which connection number they are
ps.println("This connection was number " + connectionCount );
//Get information about the connection
//SERVER IP Address
InetAddress localAddress = clientConnection.getLocalAddress();
//SERVER Port
int localPort = clientConnection.getLocalPort();
//CLIENT IP Address
InetAddress remoteAddress = clientConnection.getInetAddress();
//CLIENT Port
int remotePort = clientConnection.getPort();
//Have the server (NetBeans) show all the collected information
System.out.println("\nSocket Pair:\n\t"
+ "Server: IP - " + localAddress.toString() + ", Port - " + localPort + "\n\t"
+ "Client: IP - " + remoteAddress.toString() + ", Port - " + remotePort);
System.out.println("\nConnection: " + connectionCount + "\n");
// "flush()" in important in that it forces a write
// across what is in fact a slow connection
ps.flush();
clientConnection.close();
System.out.println("The last connection has been closed.");
}
System.out.println("\nFive connections have been made - End of program.");
}
catch(Exception e)
{
System.out.println("problem with networking: " + e);
}
}
}