C terminal code MULTI-FUNCTION CLIENT AND SERVER: This problem involves the deve
ID: 3884944 • Letter: C
Question
C terminal code
MULTI-FUNCTION CLIENT AND SERVER: This problem involves the development of a
simple client-server application. Upon execution, the client should print a menu
of possible commands, and prompt the user to enter the number of a command which
should be executed on the server. Then, the client should send the number to the
server (which is waiting to read requests on a predefined UDP port). The server
should read the number from the client and execute the appropriate command,
returning the results (as a string) to the client. The client should print the
reply to the console and then be ready to accept additional commands from the
user.
The command that should be available are:
1. Current time
2. PID (process ID) of the server
3. Random number between 1 and 30, inclusive
Note: The Application Layer Protocol should be clearly defined, and must
exchange data in ASCII format only. The server should be connectionless and
iterative, i.e. only process one request at a time (see net2/server.c). Don't
worry about making the communication reliable, e.g. by adding timeouts, etc.
Explanation / Answer
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server
{
private static Socket socket;
public static void main(String[] args)
{
try
{
int port = 25000;
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("Server Started and listening to the port 25000");
//Server is running always. This is done using this while(true) loop
while(true)
{
//Reading the message from the client
socket = serverSocket.accept();
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String number = br.readLine();
System.out.println("Message received from client is "+number);
//Multiplying the number by 2 and forming the return message
String returnMessage;
try
{
int numberInIntFormat = Integer.parseInt(number);
int returnValue = numberInIntFormat*2;
returnMessage = String.valueOf(returnValue) + " ";
}
catch(NumberFormatException e)
{
//Input was not a number. Sending proper message back to client.
returnMessage = "Please send a proper number ";
}
//Sending the response back to the client.
OutputStream os = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
bw.write(returnMessage);
System.out.println("Message sent to the client is "+returnMessage);
bw.flush();
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try
{
socket.close();
}
catch(Exception e){}
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.