logo

Једноставан калкулатор који користи ТЦП у Јави

Предуслов: Програмирање сокета у Јави Умрежавање се једноставно не завршава једносмерном комуникацијом између клијента и сервера. На пример, размислите о серверу који показује време који слуша захтеве клијената и одговара клијенту са тренутним временом. Апликације у реалном времену обично следе модел захтев-одговор за комуникацију. Клијент обично шаље објекат захтева серверу који након обраде захтева шаље одговор назад клијенту. Једноставно речено, клијент захтева одређени ресурс доступан на серверу и сервер одговара на тај ресурс ако може да потврди захтев. На пример, када се притисне ентер након уношења жељеног УРЛ-а, захтев се шаље одговарајућем серверу који затим одговара слањем одговора у облику веб странице коју претраживачи могу да прикажу. У овом чланку имплементирана је једноставна апликација калкулатора у којој ће клијент слати захтеве серверу у облику једноставних аритметичких једначина, а сервер ће одговорити одговором на једначину.

Програмирање на страни клијента

Кораци укључени на страни клијента су следећи:
  1. Отворите прикључак утичнице
  2. Комуникација:У комуникацијском делу долази до незнатне промене. Разлика у односу на претходни чланак лежи у коришћењу и улазног и излазног тока за слање једначина и примање резултата на сервер и са сервера. ДатаИнпутСтреам и ДатаОутпутСтреам се користе уместо основних ИнпутСтреам и ОутпутСтреам како би били независни од машина. Користе се следећи конструктори -
      јавни ДатаИнпутСтреам(ИнпутСтреам ин)
        Syntax:   public DataInputStream(InputStream in)   Parameters:   in - The underlying InputStream. Creates a DataInputStream that uses the specified underlying InputStream.
      јавни ДатаОутпутСтреам(ИнпутСтреам ин)
        Syntax:   public DataOutputStream(OutputStream out)   Parameters:   out - The underlying OutputStream. Creates a DataOutputStream that uses the specified underlying OutputStream.
    Након креирања улазних и излазних токова користимо реадУТФ и вритеУТФ методе креираних токова да бисмо примили и послали поруку.
      публиц финал Стринг реадУТФ() избацује ИОЕкцептион
      Reads the string encoded using UTF8 encoding.   Throws:   IOException - the stream has been closed and the contained input stream does not support reading after close or another I/O error occurs 
      публиц финал Стринг вритеУТФ() избацује ИОЕкцептион
      Writes the string encoded using UTF8 encoding.   Throws:   IOException - the stream has been closed and the contained input stream does not support reading after close or another I/O error occurs 
  3. Затварање везе.

Имплементација на страни клијента

Java
// Java program to illustrate Client Side Programming // for Simple Calculator using TCP import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; public class Calc_Client {  public static void main(String[] args) throws IOException  {  InetAddress ip = InetAddress.getLocalHost();  int port = 4444;  Scanner sc = new Scanner(System.in);  // Step 1: Open the socket connection.  Socket s = new Socket(ip port);  // Step 2: Communication-get the input and output stream  DataInputStream dis = new DataInputStream(s.getInputStream());  DataOutputStream dos = new DataOutputStream(s.getOutputStream());  while (true)  {  // Enter the equation in the form-  // 'operand1 operation operand2'  System.out.print('Enter the equation in the form: ');  System.out.println(''operand operator operand'');  String inp = sc.nextLine();  if (inp.equals('bye'))  break;  // send the equation to server  dos.writeUTF(inp);  // wait till request is processed and sent back to client  String ans = dis.readUTF();  System.out.println('Answer=' + ans);  }  } } 
Излаз
Enter the equation in the form: 'operand operator operand' 5 * 6 Answer=30 Enter the equation in the form: 'operand operator operand' 5 + 6 Answer=11 Enter the equation in the form: 'operand operator operand' 9 / 3 Answer=3 

Програмирање на страни сервера



Кораци укључени на страни сервера су следећи:
  1. Успоставите утичницу.
  2. Обрадите једначине које долазе од клијента:На страни сервера такође отварамо и инпутСтреам и оутпутСтреам. Након што примимо једначину, обрађујемо је и враћамо резултат назад клијенту уписивањем на излазни ток сокета.
  3. Затворите везу.

Имплементација на страни сервера

како је измишљена школа
Java
// Java program to illustrate Server Side Programming // for Simple Calculator using TCP import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.StringTokenizer; public class Calc_Server {  public static void main(String args[]) throws IOException  {  // Step 1: Establish the socket connection.  ServerSocket ss = new ServerSocket(4444);  Socket s = ss.accept();  // Step 2: Processing the request.  DataInputStream dis = new DataInputStream(s.getInputStream());  DataOutputStream dos = new DataOutputStream(s.getOutputStream());  while (true)  {  // wait for input  String input = dis.readUTF();  if(input.equals('bye'))  break;  System.out.println('Equation received:-' + input);  int result;  // Use StringTokenizer to break the equation into operand and  // operation  StringTokenizer st = new StringTokenizer(input);  int oprnd1 = Integer.parseInt(st.nextToken());  String operation = st.nextToken();  int oprnd2 = Integer.parseInt(st.nextToken());  // perform the required operation.  if (operation.equals('+'))  {  result = oprnd1 + oprnd2;  }  else if (operation.equals('-'))  {  result = oprnd1 - oprnd2;  }  else if (operation.equals('*'))  {  result = oprnd1 * oprnd2;  }  else  {  result = oprnd1 / oprnd2;  }  System.out.println('Sending the result...');  // send the result back to the client.  dos.writeUTF(Integer.toString(result));  }  } } 
Излаз:
Equation received:-5 * 6 Sending the result... Equation received:-5 + 6 Sending the result... Equation received:-9 / 3 Sending the result... 
Note: In order to test the above programs on the system please make sure that you run the server program first and then the client one. Make sure you are in the client console and from there enter the equation in the format-'operand1 operator operand2' and press Enter. Answer to the requested equation will be shown in the client console only. Finally to terminate the communication type 'bye' (without quotes) and hit enter. Повезани чланак: Једноставан калкулатор који користи УДП у Јави Креирај квиз