logo

Egyszerű számológép TCP-vel Java nyelven

Előfeltétel: Socket programozás Java nyelven A hálózatépítés egyszerűen nem zárul le az ügyfél és a szerver közötti egyirányú kommunikációval. Vegyünk például egy időjelző szervert, amely meghallgatja a kliensek kérését, és az aktuális idővel válaszol a kliensnek. A valós idejű alkalmazások általában egy kérés-válasz modellt követnek a kommunikációban. A kliens általában elküldi a kérés objektumot a szervernek, amely a kérés feldolgozása után visszaküldi a választ a kliensnek. Egyszerűen fogalmazva, az ügyfél egy adott erőforrást kér a kiszolgálón, és a szerver válaszol az erőforrásra, ha ellenőrizni tudja a kérést. Például, ha a kívánt url beírása után az Enter billentyűt lenyomjuk, egy kérést küldünk a megfelelő szervernek, amely aztán válaszol a választ egy weboldal formájában, amelyet a böngészők képesek megjeleníteni. Ebben a cikkben egy egyszerű számológépet valósítunk meg, ahol a kliens kéréseket küld a szervernek egyszerű aritmetikai egyenletek formájában, és a szerver válaszol az egyenletre.

Kliens oldali programozás

Az ügyféloldali lépések a következők:
  1. Nyissa ki az aljzat csatlakozását
  2. Kommunikáció:A kommunikációs részben van némi változás. A különbség az előző cikkhez képest abban rejlik, hogy mind a bemeneti, mind a kimeneti adatfolyamot használják az egyenletek küldésére, valamint az eredmények fogadására a szerverre, illetve a szerverről. DataInputStream és DataOutputStream Az alap InputStream és OutputStream helyett használják, hogy a gép független legyen. A következő konstruktorokat használjuk:
      nyilvános DataInputStream(InputStream in)
        Syntax:   public DataInputStream(InputStream in)   Parameters:   in - The underlying InputStream. Creates a DataInputStream that uses the specified underlying InputStream.
      nyilvános DataOutputStream(InputStream in)
        Syntax:   public DataOutputStream(OutputStream out)   Parameters:   out - The underlying OutputStream. Creates a DataOutputStream that uses the specified underlying OutputStream.
    A bemeneti és kimeneti folyamok létrehozása után a létrehozott folyamok readUTF és writeUTF metódusait használjuk az üzenet fogadására és elküldésére.
      public final String readUTF() dob 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() IOExceptiont dob
      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. A kapcsolat lezárása.

Ügyféloldali megvalósítás

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

Szerver oldali programozás



A szerver oldalon a következő lépések zajlanak:
  1. Hozzon létre egy aljzatcsatlakozást.
  2. Az ügyféltől származó egyenletek feldolgozása:Szerver oldalon is megnyitjuk az inputStream és az outputStream elemeket. Az egyenlet beérkezése után feldolgozzuk, és az eredményt a socket outputStream-ére írva visszaküldjük a kliensnek.
  3. Zárja le a kapcsolatot.

Szerver oldali megvalósítás

általánosság java-ban
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));  }  } } 
Kimenet:
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. Kapcsolódó cikk: Egyszerű számológép UDP-vel Java nyelven Kvíz létrehozása