• Implementasi Sederhana Client-Server Computing di Java

    Java telah menyediakan beberapa class yang dapat digunakan untuk komunikasi dalam jaringan, diantaranya adalah komunikasi menggunakan socket yang memungkinkan program untuk berkomunikasi melalui socket yang telah dibuat. Network programming dalam java selalu melibatkan minimal satu client dan satu server. Client mengirim request ke server, dan server merespon request tersebut. Client memulai koneksi dengan mencoba membuat koneksi ke sever. Server dapat menerima ataupun menolak koneksi tersebut. Setelah terjadi koneksi dari client ke server atau sebaliknya, client dan server dapat berkomunikasi melalui socket.

    2.      Server Socket

    Untuk membuat koneksi dengan server, dalam java harus dibuat server socket yang nantinya diarahkan ke port tertentu yang akan digunakan server untuk menerima koneksi dari client. Port yang dapat digunakan mulai dari 0 sampai 65536, kecuali port 0 sampai 1024 yang sudah digunakan atau dialokasikan sebelumnya.

    Perintah dibawah ini adalah perintah untuk membuat Server Socket yang diberi nama serverSocket.

    ServerSocket serverSocket = new ServerSocket(port);

    Setelah socket dibuat melalui script diatas, server dapat menggunakan script dibawah ini untuk menerima koneksi.

    Socket socket = serverSocket.accept();
    

    3.    Client Socket

    Melaui script dibawah ini, client akan membuat koneksi ke server dengan IP dan port tertentu. Selain menggunakan IP, juga bisa menggunakan domain name atau hostname.

    Socket socket = new Socket(serverName, port);
    

    4.      Transmisi data melaui socket

    Setelah server membuat dan menerima koneksi dari server, komunikasi antara server dan client telah berjalan seperti dalam I/O streams yang sama. Script yang menunjukkan pembuatan stream yang digunakan untuk pertukaran data dapet tergambar dalam gambar dibawah ini.

    Untuk mendapatkan input stream dan output stream, dapat menggunakan method getInputStream() dan getOutputStream() dalam socket yang telah dibuat. Sebagai contoh, dalam sctript dibawah ini membuat sebuat InputStream dengan nama input dan OutputStream dengan nama output.

    InputStream input = socket.getInputStream();

    OutputStream output = socket.getOutputStream();

     

    InputStream dan OutputStream digunakan untuk menulis dan membaca data stream. Untuk memasukkan dan membaca data berupa int, double ataupun string dalam inputStream dan OutputStream dapa menggunakan DataInputStream, DataOutputStream, BufferedReader dan PrintWriter.

     

    DataInputStream input = new DataInputStream

      (socket.getInputStream());

    DataOutputStream output = new DataOutputStream

      (socket.getOutputStream());

     

                Server dapat menggunakan input.readDouble() untuk menerima data dengan type double dari client dan out.writeDouble(x) untuk mengirim data x ke client.

     

    5.      Source Code client.java

    package nongui;

     

    /**

     *

     * @author SONY

     */

      import java.io.*;

      import java.net.*;

    import java.util.Scanner;

     

      public class client{

        // IO streams

        private DataOutputStream toServer;

        private DataInputStream fromServer;

     

        public static void main(String[] args) {

          new client();

        }

     

        public client() {

        //Membuat scanner untuk masukan dari keyboard

        Scanner scanner = new Scanner(System.in);

     

        try {

     

           // Membuat socket untuk koneksi ke server

           Socket socket = new Socket("localhost", 8000);

     

           // Membuat input stream untuk menerima data dari server

           fromServer = new DataInputStream(

             socket.getInputStream());

     

           // Membuat output stream untuk mengirin data ke server

           toServer = new DataOutputStream(

       socket.getOutputStream());

     

           System.out.print("Enter an integer: ");

           Double radius = scanner.nextDouble();

           toServer.writeDouble(radius);

           toServer.flush();

           double area =  fromServer.readDouble();

           System.out.print("Radius is " + radius + "\n");

           System.out.print("Area received from the server is "

               + area + '\n');

     

         }

         catch (IOException ex) {

           System.out.print(ex.toString() + '\n');

         }

       }

      }

    6.      Source Code server.java

    package nongui;

     

    /**

     *

     * @author SONY

     */

       import java.io.*;

       import java.net.*;

       import java.util.*;

     

     

     public class server{

          public static void main(String[] args) {

          new server();

        }

     

        public server() {

     

           try {

            // Membuat server socket dengan port 8000

            ServerSocket serverSocket = new ServerSocket(8000);

            System.out.print("Server started at " + new Date() + '\n');

     

            // Membaca request koneksi dari client

            Socket socket = serverSocket.accept();

     

            // Membuat data input stream dan data output stream

            DataInputStream inputFromClient = new DataInputStream(

              socket.getInputStream());

            DataOutputStream outputToClient = new DataOutputStream(

              socket.getOutputStream());

            do {

     

            while (true) {

              // Menerima Double yang dikirimkan oleh client

              double radius = inputFromClient.readDouble();

     

              // Menghitung Hasil

              double area = radius * radius * Math.PI;

     

              // Mengirim hasil histungan ke client

              outputToClient.writeDouble(area);

     

              System.out.print("Radius received from client: " + radius + '\n');

              System.out.print("Area found: " + area + '\n');

            }

            } while (inputFromClient.readDouble()!=100);

          }

          catch(IOException ex) {

            System.err.println(ex);

          }

        }

      }

     

    7.      Kesimpulan

    Java telah menyediakan beberapa class yang dapat digunakan untuk komunikasi dalam jaringan, diantaranya adalah komunikasi menggunakan socket. Java menggunakan sistem client server, client membuat koneksi, server menerima koneksi tersebut, baru kemudian terjadi proses komputasi selanjutnya. Ada dua maca socket dalam java, yaitu server socket dan client socket.

    Untuk mendapatkan input stream dan output stream, dapat menggunakan method getInputStream() dan getOutputStream() dalam socket yang telah dibuat. Untuk memasukkan dan membaca data berupa int, double ataupun string dalam inputStream dan OutputStream dapa menggunakan DataInputStream, DataOutputStream, BufferedReader dan PrintWriter.

     

    Tags: 
    Share/Save

    Comments

    guys kalo clientnya j2me application gmn?
    d baahas y...

    Add new comment

    Plain text

    • No HTML tags allowed.
    • Web page addresses and e-mail addresses turn into links automatically.
    • Lines and paragraphs break automatically.
    Type the characters you see in this picture. (verify using audio)
    Type the characters you see in the picture above; if you can't read them, submit the form and a new image will be generated. Not case sensitive.