Advertisement
rootUser

TCPServerCalculator

May 7th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 3.65 KB | None | 0 0
  1. package task1;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.DataOutputStream;
  5. import java.io.IOException;
  6. import java.io.InputStreamReader;
  7. import java.net.ServerSocket;
  8. import java.net.Socket;
  9. import java.util.ArrayList;
  10. import java.util.Arrays;
  11. import java.util.List;
  12.  
  13. public class TCPServer
  14. {
  15.  
  16.     public static List<String> function(String input)
  17.     {
  18.         List<String> list = new ArrayList();
  19.         double result = 0;
  20.         List<String> tokens = new ArrayList<>();
  21.         tokens.addAll(Arrays.asList(input.split(":")));
  22.         try
  23.         {
  24.             String operator = tokens.get(0);
  25.             double operand1 = Double.parseDouble(tokens.get(1));
  26.             double operand2 = 0;
  27.             switch (operator)
  28.             {
  29.                 case "+":
  30.                     operand2 = Double.parseDouble(tokens.get(2));
  31.                     result = operand1 + operand2;
  32.                     list.add(Double.toString(result));
  33.                     break;
  34.                 case "-":
  35.                     operand2 = Double.parseDouble(tokens.get(2));
  36.                     result = operand1 - operand2;
  37.                     list.add(Double.toString(result));
  38.                     break;
  39.                 case "*":
  40.                     operand2 = Double.parseDouble(tokens.get(2));
  41.                     result = operand1 * operand2;
  42.                     list.add(Double.toString(result));
  43.                     break;
  44.                 case "/":
  45.                     operand2 = Double.parseDouble(tokens.get(2));
  46.                     result = operand1 / operand2;
  47.                     list.add(Double.toString(result));
  48.                     break;
  49.                 case "%":
  50.                     operand2 = Double.parseDouble(tokens.get(2));
  51.                     result = operand1 % operand2;
  52.                     list.add(Double.toString(result));
  53.                     break;
  54.                 case "sqrt()":
  55.                     if(operand1<0)
  56.                     {
  57.                         list.add("Infinity");
  58.                     }
  59.                     else
  60.                     {
  61.                         result = Math.sqrt(operand1);
  62.                         list.add(Double.toString(result));
  63.                     }
  64.                     break;
  65.                 case "sin()":
  66.                     result = Math.sin(operand1);
  67.                     list.add(Double.toString(result));
  68.                     break;
  69.                 case "cos()":
  70.                     result = Math.cos(operand1);
  71.                     list.add(Double.toString(result));
  72.                     break;
  73.                 default:
  74.                     list.add("Invalid operation");
  75.                     break;
  76.             }
  77.         }
  78.         catch (Exception e)
  79.         {
  80.             list.add(e.toString());
  81.         }
  82.         return list;
  83.     }
  84.  
  85.     public static void main(String[] args)
  86.     {
  87.         try
  88.         {
  89.             ServerSocket serverSocket = new ServerSocket(1256);
  90.             System.out.println("Waiting for client....");
  91.             Socket connectionSocket = serverSocket.accept();
  92.  
  93.             BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
  94.             String sentenceFromClient = inFromClient.readLine();
  95.  
  96.             String modifiedResult = function(sentenceFromClient).get(0);
  97.             DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
  98.             outToClient.writeBytes(modifiedResult + '\n');
  99.  
  100.             serverSocket.close();
  101.  
  102.         }
  103.         catch (IOException ex)
  104.         {
  105.             System.out.println("Unable to attach " + ex);
  106.         }
  107.     }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement