Rabu, 02 Mei 2012

Pengiriman Obyek lewat Soket


Sejauh ini, penulis memberikan contoh mengirimkan pesan string lewat soket. Mungkinkah untuk mengirimkan obyek secara utuh lewat soket? Jawabannya adalah bisa. Mekanisme ini disebut dengan serialisasi. Syaratnya adalah kelas dari obyek yang hendak dikirimkan lewat soket haruslah mengimplementasikan Serializeble. Perlu diperhatikan kelas yang mengimplementasikan serializable tidak butuh melakukan overriding method apapun. Kelas interface seriazable terdapat pada paket Java.io.

Selain itu obyek yang akan dikirimkan lewat soket harus menggunakan ObjectOutputStream sedangkan untuk membacanya menggunakan ObjectInputStream. Serialisasi ini bukan saja berguna untuk mengirimkan obyek lewat soket namun juga untuk menyimpan obyek secara persiten kedalam file.

Pada tahap ini saya akan membuat Tutorial kelas staff yang berisi informasi data pegawai. Data staff akan dikirimkan dari suatu aplikasi client ke aplikasi server lewat soket. Pada kali ini kita menggunakan 3 coding java.

  1.     Ketikkan kode sumber (source code) pada Notepad, Editplus, atau IDE lainnya, dan saya memilih menggunakan Notepad++ sebagai text editor. Pada aplikasi ini menggunakan 3 source code saya beri nama Staff.java, ObjectServer.java, ObjectClient.java Adapun source code-nya adalah sebagai berikut :

v  Staff.java

import java.io.*;

public class Staff implements Serializable{
String nama;
String divisi;
int       umur;

public Staff (String nama , String divisi, int umur)
{
            this.nama=nama;
            this.divisi=divisi;
            this.umur= umur;
}

public void print()
{
System.out.println("Data Staff: ");
System.out.println("Nama:"            + nama);
System.out.println("Divas:" + divisi);
System.out.println("Umur:"+           umur);
}

}

v  ObjectServer.java

import java.net.*;
import java.io.*;

public class ObjectServer {
private static int SRV_PORT=5000;
private static ObjectInputStream is=null;

public static void main(String argv[]) throws Exception{
            //membnat soket server dan menunggu koneksi
            ServerSocket soketServer= new ServerSocket(SRV_PORT);
            Socket soketClient= soketServer.accept() ;

            //membuat stream untuk baca obyek
            is= new ObjectInputStream(soketClient.getInputStream());

            //menunggu dan membaca obyek yang dikirimkan
            Staff pegawai= (Staff) is.readObject();

            System.out.println("Server menerima data Pegawai");
            pegawai.print();
}
}

v  ObjectClient.java

import java.net.*;
import java.io.*;

public class ObjectClient{
private static int SRV_PORT = 5000;
private static ObjectOutputStream os=null;

public static void main(String argv[]) throws Exception{
 try{
            //membuat soket client
            Socket soketClient= new Socket("127.0.0.1", SRV_PORT);

            //membuat stream untuk pengiriman obyek
            os= new
            ObjectOutputStream(soketClient.getOutputStream());

            //membuat obyek dan mengirimkannya lewat stream obyek
            Staff pegawai= new Staff("Alfian","IT",22);
            os.writeObject(pegawai);

            System.out.println("Client mengirim data pegawai:");
            pegawai.print();
            }
           
            catch(Exception e) {
            e.printStackTrace() ;
}
}
}

2. Kemudian simpan kedua program tadi pada direktori mana saja, dan saya menyimpannya di direktori
 "D:\tugas progjar\D1-8".

3. Setelah disimpan, kemudian buka 2 jendela cmd (command prompt) pada menu Start > Accessories > Command Prompt atau langsung ketikkan cmd pada menu Run untuk mengkompile dan menjalankan program tersebut. Pada masing-masing cmd, ketikkan D: [enter] cd tugas progjar [enter] cd D1-8 [enter]
maka root direktori akan berubah menjadi " D:\tugas progjar\D1-8" kemudian compile program tersebut dan jalankan dengan cara sebagai berikut :


Output Server


Output Client


0 komentar:

Posting Komentar