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.
Â
- Add new comment
- 1442 reads
Hello!! Selamat datang di blog pribadi saya. Nama saya anjar, saya seorang mahasiswa Universitas Negeri Yogyakarta. Saat ini saya sedang mendalami tentang Web Development sekaligus Network Administration namun spesialisasi di Server Management, Drupal Web Design, dan PHP Programming.
  Silahkan kirim email ke info@anjar.web.id
Untuk RSS, bisa diarahkan ke http://anjar.web.id/rss.xml
Skype, bisa add account a.fiandri
Twitter bisa follow di @anjarwebid
Account YM bisa add di a.fiandri
Bisa nontonn video yang saya upload di http://www.youtube.com/user/ajrnea
Kumpulan artikel saya dapat dilihat di http://digg.com/ajrnea 
Monthly archive
- February 2011 (5)
- March 2011 (10)
- April 2011 (25)
- May 2011 (10)
- August 2011 (6)
- December 2011 (9)
- January 2012 (6)
- February 2012 (4)
- April 2012 (1)









Comments
client j2me
guys kalo clientnya j2me application gmn?
d baahas y...
Add new comment