Answered step by step
Verified Expert Solution
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
- 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 the code are mentioned.
- SocketManager
- Ask all the following of the user:
- A port to run its server on (something like 8800 or 8888)
- An IP of another server (local computer is 127.0.0.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
- The port of that other server.
- After starting up the server, it should enter a never-ending loop that does the following:
- Asks the user for three numbers separated by commas. So the user would enter something like this:
- Ask all the following of the user:
4,7,22
- Sends that raw text to the server using the SocketClient class as we did in class.
- IMPORTANT: The items sent should be comma-delimited all concatenated as one string.
- SocketServer
- When the server receives a message from a client, it should try to parse the comma-delimited message into an array.
- HINT: Use the sReceivedMessage.split(",") to get a String array of the comma-delimited items.
- Then turn each array string into three int variables.
- Use Integer.parseInt() to do this on each item in the array.
- Then sum these numbers into a result.
- When the server receives a message from a client, it should try to parse the comma-delimited message into an array.
- Reply with the sum of these numbers.
- SocketClient
- This is the same as we did in class.
- TESTING YOUR CODE with two instances of your app.
- 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.
- 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.
- TURNING IN LAB:
- Turn your lab into Canvas.
- IMPORTANT: DO NOT ZIP your folders/files please.
- 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
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started