logo

Jednostavan kalkulator koji koristi TCP u Javi

Preduvjet: Programiranje utičnica u Javi Umrežavanje jednostavno ne završava jednosmjernom komunikacijom između klijenta i poslužitelja. Na primjer, razmislite o poslužitelju za prikazivanje vremena koji sluša zahtjeve klijenata i odgovara klijentu s trenutnim vremenom. Aplikacije u stvarnom vremenu obično slijede model zahtjeva-odgovora za komunikaciju. Klijent obično šalje objekt zahtjeva poslužitelju koji nakon obrade zahtjeva šalje odgovor natrag klijentu. Jednostavnim rječnikom rečeno, klijent traži određeni resurs dostupan na poslužitelju, a poslužitelj mu odgovara ako može provjeriti zahtjev. Na primjer, kada se pritisne enter nakon unosa željenog URL-a, zahtjev se šalje odgovarajućem poslužitelju koji zatim odgovara slanjem odgovora u obliku web stranice koju preglednici mogu prikazati. U ovom članku implementirana je jednostavna aplikacija kalkulatora u kojoj će klijent slati zahtjeve poslužitelju u obliku jednostavnih aritmetičkih jednadžbi, a poslužitelj će odgovoriti odgovorom na jednadžbu.

Programiranje na strani klijenta

Koraci uključeni na strani klijenta su sljedeći-
  1. Otvorite priključak utičnice
  2. Komunikacija:U komunikacijskom dijelu postoji mala promjena. Razlika u odnosu na prethodni članak leži u korištenju ulaznog i izlaznog toka za slanje jednadžbi i primanje rezultata prema i od poslužitelja. DataInputStream i DataOutputStream koriste se umjesto osnovnih InputStream i OutputStream kako bi bili neovisni o stroju. Koriste se sljedeći konstruktori -
      javni DataInputStream(InputStream u)
        Syntax:   public DataInputStream(InputStream in)   Parameters:   in - The underlying InputStream. Creates a DataInputStream that uses the specified underlying InputStream.
      javni DataOutputStream(InputStream in)
        Syntax:   public DataOutputStream(OutputStream out)   Parameters:   out - The underlying OutputStream. Creates a DataOutputStream that uses the specified underlying OutputStream.
    Nakon stvaranja ulaznog i izlaznog toka koristimo readUTF i writeUTF metode stvorenih tokova za primanje i slanje poruke.
      public final String readUTF() izbacuje IOException
      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 
      public final String writeUTF() izbacuje IOException
      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. Zatvaranje veze.

Implementacija na strani klijenta

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);  }  } } 
Izlaz
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 

Programiranje na strani poslužitelja



Koraci uključeni na strani poslužitelja su sljedeći-
  1. Uspostavite vezu utičnice.
  2. Obradite jednadžbe koje dolaze od klijenta:Na strani poslužitelja također otvaramo i inputStream i outputStream. Nakon što primimo jednadžbu, obrađujemo je i vraćamo rezultat natrag klijentu upisivanjem na outputStream utičnice.
  3. Zatvorite vezu.

Implementacija na strani poslužitelja

blokirani brojevi
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));  }  } } 
Izlaz:
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. Povezani članak: Jednostavan kalkulator koji koristi UDP u Javi Napravi kviz