Skip to content
Snippets Groups Projects
Commit 03216cc9 authored by Bill's avatar Bill
Browse files

No commit message

No commit message
parent 5142dae9
No related branches found
No related tags found
No related merge requests found
package MV3500Cohort2020JulySeptember.homework2.Mahan;
import java.io.*;
import java.net.*;
/**
*
* @author Bill
*/
public class Mahan_Client {
// IPv6 String constant for localhost address, similarly IPv4 127.0.0.1
public final static String LOCALHOST = "0:0:0:0:0:0:0:1";
public static void main(String[] args) {
// Local vars/fields
Socket socket;
InputStream is;
InputStreamReader isr;
BufferedReader br;
String serverMessage;
Integer count = 0;
OutputStream os;
PrintStream ps;
try {
while (true) {
System.out.println("TcpExample3Client creating socket...");
// We request an IP to connect to ("localhost") and
// port number at that IP (2317). This establishes
// a connection to that IP in the form of a Socket
// object; the server uses a ServerSocket to wait for
// connections.
socket = new Socket(LOCALHOST, 2317); // locohost?
// Now hook everything up (i.e. set up the streams), Java style:
is = socket.getInputStream();
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
// Read a single line written by the server. We'd
// do things a bit differently if there were many lines to be read
// from the server instead of one only.
serverMessage = br.readLine();
System.out.println("==================================================");
System.out.println("'Knock, knock,' says the MahanClient.");
System.out.println("The MahanServer responds by saying: '" + serverMessage + "'");
System.out.println("A frustrated MahanClient responds, 'Answer your door! I have knocked "+ count +" times.");
count++;
// socket gets closed, either automatically/silently by this code (or possibly by the server)
// Now hook everything up (i.e. set up the streams), Java style:
os = socket.getOutputStream();
ps = new PrintStream(os);
ps.println("This message was produced by the MahanClient."); // this gets sent back to client!
ps.flush();
} // end while(true)
} catch (IOException e) {
System.err.println("Problem with TcpExample3ServerClient 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
if (e instanceof java.net.BindException) {
System.err.println("*** Be sure to stop any other running instances of programs using this port!");
}
} finally {
// program exit: tell somebody about that
System.out.println("\nclient exit");
}
}
}
package MV3500Cohort2020JulySeptember.homework2.Mahan;
import java.io.*;
import java.net.*;
/**
*
* @author Bill
*/
public class Mahan_Server {
public static void main(String[] args) {
try {
// ServerSocket waits for a connection from a client.
// Notice that it is outside the loop; ServerSocket
// needs to be made only once.
System.out.println("TcpExample3Server has started..."); // it helps debugging to put this on console first
ServerSocket serverSocket = new ServerSocket(2317);
OutputStream os;
PrintStream ps;
InetAddress localAddress, remoteAddress;
InputStream is;
InputStreamReader isr;
BufferedReader br;
String clientMessage;
int localPort, remotePort;
// Server is up and waiting (i.e. "blocked" or paused)
// Loop, infinitely, waiting for client connections.
// Stop the program somewhere else.
while (true) {
// block until connected to a client
try (Socket clientConnection = serverSocket.accept()) {
// Now hook everything up (i.e. set up the streams), Java style:
os = clientConnection.getOutputStream();
ps = new PrintStream(os);
ps.println("Go away!"); // this gets sent back to client!
// Print some information locally about the Socket connection.
// This includes the port and IP numbers on both sides (the socket pair).
localAddress = clientConnection.getLocalAddress();
remoteAddress = clientConnection.getInetAddress();
localPort = clientConnection.getLocalPort();
remotePort = clientConnection.getPort();
// My socket pair connection looks like this, to localhost:
// Socket pair: (( /0:0:0:0:0:0:0:1, 2317 ), ( /0:0:0:0:0:0:0:1, 54876 ))
// Socket pair: (( /0:0:0:0:0:0:0:1, 2317 ), ( /0:0:0:0:0:0:0:1, 54881 ))
// Why is the first IP/port the same, while the second set has different ports?
System.out.println("TcpExample3Server socket pair: (( " + localAddress.toString() + ", " + localPort + " ), ( "
+ remoteAddress.toString() + ", " + remotePort + " ))");
// Notice the use of flush() and try w/ resources. Without
// the try w/ resources the Socket object may stay open for
// a while after the client has stopped needing this
// connection. try w/ resources explicitly ends the connection.
// Now hook everything up (i.e. set up the streams), Java style:
is = clientConnection.getInputStream();
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
// Read a single line written by the server. We'd
// do things a bit differently if there were many lines to be read
// from the server instead of one only.
clientMessage = br.readLine();
System.out.println("==================================================");
System.out.println("Now we're talking!");
System.out.println("The message the server sent was: '" + clientMessage + "'");
// System.out.println("This was the "+ count +" connection.");
ps.flush();
// like it or not, you're outta here!
}
}
} catch (IOException e) {
System.err.println("Problem with TcpExample3Server networking: " + e);
// Provide more helpful information to user if exception occurs due to running twice at one time
if (e instanceof java.net.BindException) {
System.err.println("*** Be sure to stop any other running instances of programs using this port!");
}
}
}
}
assignments/src/MV3500Cohort2020JulySeptember/homework2/Mahan/Output.PNG

20.2 KiB

......@@ -10,3 +10,11 @@ References include
* [assignments source subdirectories](../../../../../assignments/src) show examples from previous cohorts.
Questions and innovation are always welcome, good luck!
Coded two classes:
MahanServer
MahanClient
1. Run the MahanServer once
2. Run the MahanClient as many times as you want
3. Enjoy the messages from the two consoles
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment