Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

DETAILS These instructions will be more bare than usual since the source code from class can be used towards this. Only the new parts to

  1. DETAILS

  1. These instructions will be more bare than usual since the source code from class can be used towards this. Only the new parts to the code are mentioned.

  1. SocketManager
    1. Ask all the following of the user:
      1. A port to run its server on (something like 8800 or 8888)
      2. An IP of another server (local computer is 127.0.0.1)
        1. NOTE: If running on two computers, to get the IP address of a computer, in a command prompt or powershell, simply type ipconfig and look for the IPV4 address or IPV6 whichever comes first. It will probably look something like this: 192.168.0.3
      3. The port of that other server.
    2. After starting up the server, it should enter a never-ending loop that does the following:
      1. Asks the user for three numbers separated by commas. So the user would enter something like this:

4,7,22

  1. Sends that raw text to the server using the SocketClient class as we did in class.
    1. IMPORTANT: The items sent should be comma-delimited all concatenated as one string.

  1. SocketServer
    1. When the server receives a message from a client, it should try to parse the comma-delimited message into an array.
      1. HINT: Use the sReceivedMessage.split(",") to get a String array of the comma-delimited items.
    2. Then turn each array string into three int variables.
      1. Use Integer.parseInt() to do this on each item in the array.
      2. Then sum these numbers into a result.

  1. Reply with the sum of these numbers.

  1. SocketClient
    1. This is the same as we did in class.

  1. TESTING YOUR CODE with two instances of your app.
    1. Simply look at the Testing Your Code section in the Project 1 document. This specifies what we did in class with the Jar file and running command line or Power Shell to run your app.
    2. IMPORTANT NOTE: if error says java command not recognized, see jar instructions file in canvas project 1 module, and in the ---RUNNING JAR FILE --- section at the bottom, it will explain how to fix that in Windows computer.

  1. TURNING IN LAB:

  1. Turn your lab into Canvas.
  2. IMPORTANT: DO NOT ZIP your folders/files please.
  3. Turn in ALL the java files for this lab.

GIVING

import java.io.*; import java.net.ServerSocket; import java.net.Socket; public class SocketServer implements Runnable { private int thisServerPort; public SocketServer(int iPort) { thisServerPort = iPort; } public void run() { //try(ServerSocket oServerSocket = new ServerSocket(thisServerPort)){ try { ServerSocket oServerSocket = new ServerSocket(thisServerPort); //Thread.sleep(1000); System.out.println("Server is listening on port " + thisServerPort); while (true) { //wait for on this line for incoming connection Socket oSocket = oServerSocket.accept(); System.out.println("[server]: New client connected: " + oSocket.getRemoteSocketAddress()); // Build reader to read in incoming message. InputStream input = oSocket.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(input)); //Build a writer to send msg back to the caller OutputStream output = oSocket.getOutputStream(); PrintWriter writer = new PrintWriter(output, true); String sReceivedMessage = reader.readLine(); System.out.println("[server] Message received: " + sReceivedMessage); writer.println("Other server received your message(" + sReceivedMessage + ")"); writer.flush(); } } catch (Exception ex) { System.out.println("[server]; error: " + ex.getMessage()); } } }
import java.util.Scanner; public class SocketsTest { public static void main (String[] args){ int iThisServerPort = new Scanner(System.in).nextInt(); System.out.print("Enter port for this server to listen on: "); SocketServer oServer = new SocketServer(iThisServerPort); Thread oServerThread = new Thread (oServer); oServerThread.start(); System.out.print("Enter IP address of server to connect to: "); String iOtherServerIP = new Scanner(System.in).nextLine(); System.out.print("Enter IP address of server to connect to: "); int iOtherSeverIP = new Scanner(System.in).nextInt(); while(true){ System.out.print("Enter message to send: "); String sMessage = new Scanner(System.in).nextLine(); SocketClient oClient = new SocketClient(); String sServerReply = oClient.connectForOneMessage(iOtherServerIP, iThisServerPort, sMessage); System.out.print("[client]: Reply from server: "+ sServerReply); } } } 
import java.io.*; import java.net.InetSocketAddress; import java.net.Socket; public class SocketClient { public String connectForOneMessage(String sIP, int iPort, String sMessage) { try { Socket oSocket = new Socket(); oSocket.connect(new InetSocketAddress(sIP, iPort), 5000); //Build a writer to send msg to server. OutputStream output = oSocket.getOutputStream(); PrintWriter writer = new PrintWriter(output, true); //send msg to server writer.println(sMessage); writer.flush(); //build a reader to read server reply msg InputStream input = oSocket.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(input)); String sReturn = reader.readLine(); return sReturn; } catch (Exception ex) { System.out.println("[client]: Client exception: " + ex.getMessage()); return null; } } }

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

More Books

Students also viewed these Databases questions