Vous êtes sur la page 1sur 9

2011

X3-SOLUTION

APLIKASI PENGIRIM PESAN SEDERHANA MENGGUNAKAN JAVA SOCKET

[http://hendrosteven.wordpress.com | X3-Solution

Copyright 2011 Hendro Steven

Aplikasi Simulasi Email Sederhana Menggunakan Java Socket


Hendro Steven Tampake hendro.steven@gmail.com

Lisensi Dokumen:
Copyright 2011 Hendro Steven Tampake, S.Kom Seluruh dokumen ini dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan pendidikan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari Penulis..

Java adalah bahasa pemogramman yang revolusioner dan sangat populer saat ini. Banyak hal hal yang dapat dengan mudah kita buat dengan Java. Salah satunya adalah pemogramman jaringan menggunakan Java Socket. Dalam tulisan ini penulis mencoba membuat aplikasi email sederhana yang dapat digunakan dalam sebuah jaringan komputer (LAN). Ide utama dari program ini adalah sama dengan membuat aplikasi chating menggunakan Java Socket yang banyak terdapat di internet. Perbedaannya adalah pesan yang diterima berupa object yang akan tersimpan secara permanen dalam bentuk file, sehingga kita dapat membacanya kapanpun (seperti email). Dalam tulisan ini penulis hanya akan membahas bagian bagian penting dari aplikasi ini, tetapi penulis juga menyertakan source code lengkap yang dapat didownload.

Persiapan
Untuk mencoba aplikasi ini tentunya komputer kita harus memiliki Java Runtime Environments (JRE) atau apabila kita ingin mengedit source codenya dan mengkompilasi ulang, maka kita harus menginstal Java Development Kit (JDK) yang bisa didownload dari http://java.sun.com (Penulis menggunakan j2sdk1.4.2)

Class class utama pada Aplikasi


Pada bagian ini penulis akan menjelaskan class class utama aplikasi email ini. Tetapi sebelum itu penulis ingin memberikan gambaran bagaimana aplikasi ini berjalan atau bagaimana sebuah pesan itu dikirim dan diterima, kemudian tersimpan secara permanen dalam bentuk file. Aplikasi ini terbagi menjadi beberapa bagian berdasarkan fungsinya. 1. Mail server atau yang akan menerima pesan. Komputer tujuan harus menjalankan mail servernya agar pesan bisa diterima. Mail server berfungsi menerima pesan kemudian menyimpannya dalam bentuk file di harddisk. 2. Mail Client atau pengirim pesan. Bagian ini berfungsi menciptakan object pesan kemudian mengirimkannya ke Mail server tujuan. 3. Mail Reader atau pembaca pesan. Bagian ini berfungsi untuk membuka file object pesan tersebut agar dapat dibaca. Karena pemograman aplikasi ini berbasis jaringan, maka pengalamatannya adalah berdasarkan nomer IP atau nama Komputer. Dengan kata lain adalah dalam satu komputer hanya boleh terdapat satu Mail Server, sehingga alamat Mail Server tersebut adalah sesuai dengan IP atau nama komputer dimana dia berada. Berikut ini adalah class class utama yang membentuk aplikasi ini.

Copyright 2011 Hendro Steven

1.

Mail.java
import java.io.Serializable; public class Mail implements Serializable { private String tgl=""; private String pengirim=""; private String senderIP=""; private String subject=""; private String tujuan=""; private String msg=""; public Mail(){} public Mail(String tgl,String senderIP,String pengirim, String subject, String tujuan, String msg) { this.tgl = tgl; this.pengirim = pengirim; this.senderIP = senderIP; this.subject = subject; this.tujuan = tujuan; this.msg = msg; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public String getPengirim() { return pengirim; } public void setPengirim(String pengirim) { this.pengirim = pengirim; } public String getSenderIP() { return senderIP; } public void setSenderIP(String senderIP) { this.senderIP = senderIP; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getTgl() { return tgl; } public void setTgl(String tgl) { this.tgl = tgl; } }

File ini berfungsi sebagai object mail. Semua pesan yang akan dikirim dan dibaca harus berbentuk object mail ini. Class ini harus Serializable karena object yang bisa dikirimkan via socket adalah object yang
serializable.

Copyright 2011 Hendro Steven

2.

MailServer.java
import import import import import import java.io.DataInputStream; java.io.FileOutputStream; java.io.IOException; java.io.ObjectInputStream; java.io.ObjectOutputStream; java.net.Socket;

public class MailServer extends Thread{ private Mail receiveMail; private Socket serviceSocket = null; private DataInputStream in; private FileOutputStream fileMail; private ObjectInputStream oin; private ObjectOutputStream oout; private FileName fn = new FileName();

public MailServer(Socket socket) { this.serviceSocket = socket; } public void run() { try{ in = new DataInputStream(serviceSocket.getInputStream()); oin = new ObjectInputStream(in); fileMail = new FileOutputStream(fn.getFileName()); oout = new ObjectOutputStream(fileMail); try { receiveMail = (Mail)oin.readObject(); oout.writeObject(receiveMail); } catch (ClassNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } fileMail.close(); in.close(); oin.close(); oout.close(); fileMail.close(); serviceSocket.close(); } catch(IOException e){ e.printStackTrace(); }catch(NullPointerException e){ System.out.println("Please read that email..."); } } }

File inilah yang berfungsi sebagai Mail Server atau penerima pesan. Begitu ada object pesan yang diterima, maka file atau class ini akan menyimpannya dalam bentuk file. File yang diciptakan tidak dapat kita baca misalnya dengan notepad, karena file ini berisi object mail dan bukan plain text. Untuk membaca file ini harus menggunakan class yang berperan sebagai mail reader yang akan saya jelakan nanti. Lokasi dan nama file diciptakan oleh baris perintah berikut ini : fileMail = new FileOutputStream(fn.getFileName()); fn adalah Object FileName, atau object pembantu untuk menciptakan String nama file dan tanggal saat ini (bisa dilihat pada source code yang disertakan). Nama file yang diciptakan adalah berdasarkan waktu kapan pesan itu diterima.

Copyright 2011 Hendro Steven

3.

MultiMailServer.java
import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class MultiMailServer { static final int PORT = 777; public ServerSocket mms; public MultiMailServer(){ try { mms = new ServerSocket(PORT); System.out.println("Mail Server Started..."); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void startMultiMailServer() throws IOException { try{ while(true){ Socket socket = mms.accept(); MailServer ms=new MailServer(socket); ms.start(); System.out.println("You have a New Message..."); } }finally{ mms.close(); } } public static void main(String args[]) throws IOException{ MultiMailServer ms = new MultiMailServer(); try { ms.startMultiMailServer(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

File ini berfungsi menjalankan Mail server secara multi thread agar dapat diakses oleh banyak Mail client. File atau class ini akan menjalankan Thread Mail server yang baru begitu ada pesan yang masuk. 4. PostMail.java File ini berbentuk java swing dan source codenya cukup panjang, sehingga penulis hanya akan menampilakan penggalan kode yang penting. File ini juga merupakan bagian utama dari program kita, berperan sebagai user interface yaitu tempat menulis pesan (Mail client) dan membaca pesan (Mail Reader). Penggalan kode berikut ini yang berfungsi menciptakan object mail dan mengirimnya ke Server mail tujuan.

Copyright 2011 Hendro Steven

protected void jButton1ActionPerformed(ActionEvent evt){ //TODO add your handler code here FileName fn = new FileName(); pengirim = jTextField1.getText(); subject = jTextField2.getText(); tujuan = jTextField3.getText(); pesan = jTextArea1.getText(); Mail email = new Mail(fn.getCurrDate(),pengirimIP,pengirim,subject,tujuan,pesan); MailClient mc; try { mc = new MailClient(tujuan); mc.sendMail(email); JOptionPane.showMessageDialog(null,"Message Send..."); jTextField1.setText(""); jTextField2.setText(""); jTextField3.setText(""); jTextArea1.setText(""); }catch(ConnectException e){ JOptionPane.showMessageDialog(null,"Destination Server is Offline..."); }catch (java.net.UnknownHostException e) { // TODO Auto-generated catch block JOptionPane.showMessageDialog(null,"Unknown Destination Server..."); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }

Dan berikut ini adalah penggalan kode yang berfungsi sebagai pembaca pesan atau Mail Reader.
protected void jList1MouseClicked(MouseEvent evt){ //TODO add your handler code here int indexData = jList1.getSelectedIndex(); Mail readMail = new Mail(); readMail = (Mail)inbox.get(indexData); String tgl = "Tanggal : "+readMail.getTgl()+"\n"; String pengirim = "Pengirim : "+readMail.getPengirim()+ " on " + readMail.getSenderIP()+"\n"; String subject = "Subject : "+readMail.getSubject()+"\n"; String pesan = "Pesan :\n"+readMail.getMsg()+"\n"; jTextArea2.setText(tgl+pengirim+subject+pesan); }

Copyright 2011 Hendro Steven

Bagaimana Mejalankan Aplikasi?


Ekstraklah source program yang anda download di mana saja, akan terlihat struktur direktori seperti gambar berikut ini

Di dalam Folder src terdapat kode program secara lengkap dan di dalam folder bin terdapat file file class hasil kompilasi. Di dalam folder bin juga terdapat sebuah batch file (run.bat). File ini berfungsi untuk menjalankan Mail Server dan Mail Client secara bersamaan Isi dari file run.bat ini cukup sederhana dan bisa dibuka dengan notepad yaitu

start java MultiMailServer start java PostMail


Apabila kita double klik pada run.bat maka akan menjalankan Mail Server dan Mail Client secara otomatis.

Mail Server telah berjalan

Mail Client

Copyright 2011 Hendro Steven

Sebagai percobaan kita akan mengirimkan pesan ke Mail Server kita sendiri atau alamat komputer kita sendiri.

Pesan Pertama untuk Percobaan Saat kita tekan tombol Send maka pesan kita akan terkirim dan akan diterima oleh Server Mail.

Mail Server Menerima sebuah Pesan Mail Server akan menyimpan pesan tersebut dalam bentuk file pada folder bin/MailBank/[namafile].mail. Nama file berdasarkan kapan pesan tersebut diterima. Untuk membaca File tersebut pindahlah ke tab inbox. Tekan tombol Refresh Inbox untuk mengupdate isi inbox.

Copyright 2011 Hendro Steven

Inbox Pilihlah pesan yang ada pada inbox, maka akan ditampilakan pesan detail pada teks area di sampingnya.

Pesan ditampilakan Cobalah untuk menjalankan aplikasi mail ini pada 2 komputer yang berbeda tapi terhubung dalam jaringan, kemudian cobalah untuk saling mengirim pesan. Apabila anda menutup program Mail Client, anda akan tetap dapat menerima pesan selama Mail Servernya tetap berjalan. Selamat mencoba semoga bermanfaat..... NB: Aplikasi ini hanya untuk latihan Java Socket jadi belum begitu sempurna, jika masih terdapat ERROR silahkan diperbaiki sendiri OK.

Vous aimerez peut-être aussi