Pasti anda pernah melakukan chating? Pasti pernah kan….? Hayo ngaku…..! Oke, pada tulisan kali ini, saya dengan segala kerendahan hati dan kebodohan diri, ingin membagi kode program aplikasi client server menggunakan java. Namun, aplikasi ini masih sangat banyak kekurangannya dikarenakan hanya 1 client yang bisa berkomunikasi dengan server. Ini dikarenakan tidak menggunakan multithreading, maklum saya masih bodoh tentang java. Mungkin jika ada kesempatan akan saya tulis lagi aplikasi yang multi client.
Sangat disarankan anda telah menguasai dasar java, biar tidak bingung mencoba kode program ini. Ini baru saya coba di windows bajakan, maklum computer saya sedang di opname, jadi tidak bisa bermesra-mesraan dengan si penguin linux. Menulis ini saja lewat safe mode, maklum memory-nya sudah tidak kuat dikarenakan saya paksakan untuk menggunakan netbeans. “Bodoh !! sudah tahu kapasitas memory-nya rendah, masih saja nekad”.
Sebelum memulai ada baiknya kita mengheningkan cipta untuk korban kebiadaban Israel yaitu rakyat Palestina semoga arwahnya di terima oleh Allah SWT, amin. Kita juga harus memanjatkan doa untuk ketenangan keyboard, dvdrom, serta power supply saya yang telah wafat, semoga saya cepat diberikan penggantinya, amin. “Mengheningkan Cipta, Mulai !!” (sedang mengheningkan cipta) “Selesai !!”.
Oke, kini kita masuk ke pembahasan. Kode program berikut di bagi menjadi 2, yaitu untuk Server dan Client.
public class AplikasiServer {
public static void main(String[] args) {
if (args.length != 1) {
System.out.println("Masukkan Port Yang Akan Digunakan");
System.out.println("Contoh : 8080");
System.exit(1);
}
System.out.println("\t\tCopyleft 04012009 Insomniacz at RDP Laboratories\n\n");
try {
// Buat ServerSocket & Buka Layanan (Listening)
ServerSocket server = new ServerSocket(Integer.parseInt(args[0]));
// Melakukan Perulangan Tanpa Batas
while (true) {
System.out.print("Menunggu Koneksi Dari Client.....");
// Terima Koneksi Dari Client
Socket koneksi = server.accept();
System.out.println(" Ada Client Yang Telah Terkoneksi\n");
// Buka Saluran Pesan Masuk Dari Client
InputStream in = koneksi.getInputStream();
// Ubah byte Menjadi char
InputStreamReader inReader = new InputStreamReader(in);
// Baca per Baris
BufferedReader pipaMasuk = new BufferedReader(inReader);
// Buka Saluran Keluar
OutputStream out = koneksi.getOutputStream();
// Mengirim per Baris
PrintWriter pipaKeluar = new PrintWriter(out);
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
String pesanClient = "";
String balasanPesanKeClient = "";
while ( (pesanClient = pipaMasuk.readLine() ) != null) {
// Menerima Pesan dari Client
System.out.println("Client Message : " + pesanClient);
// Mengirim Pesan Balasan Ke Client
System.out.print("Send Message\t: ");
balasanPesanKeClient = input.readLine();
System.out.println();
pipaKeluar.println(balasanPesanKeClient);
pipaKeluar.flush();
}
}
}
catch (NumberFormatException nfe) {
System.err.println("Maaf, Anda Menggunakan Karakter. Pakai PORT Yang Sesuai.");
System.err.println("Contoh : 9090");
}
catch (IllegalArgumentException iae) {
System.err.println("Maaf, Anda Memasukkan Nilai PORT Yang Melebihi Jumlah PORT Yang Ada");
}
catch (BindException be) {
System.err.println("Maaf, PORT " + args[0] + " Telah Terpakai. Gunakan PORT Yang Lain.");
}
catch (SocketException se) {
System.err.println("Client Telah Keluar !");
}
catch (IOException io) {
System.err.println("Terjadi Exception : " + io.toString());
}
}
}
Setelah kita membuat program untuk Server, kini program untuk Client.
try {
// Buat Objek Socket & Buka Koneksi
Socket client = new Socket(args[0], Integer.parseInt(args[1]));
// Remote Address & PORT
System.out.println("\t\t\t Informasi Alamat");
System.out.println("Remote Server : " + client.getInetAddress());
System.out.println("PORT : " + client.getPort());
System.out.println("PORT Dinamis : " + client.getLocalPort());
System.out.println("\n\n");
// Buka Saluran Pesan Masuk Dari Server
InputStream in = client.getInputStream();
// Ubah byte ke char
InputStreamReader inReader = new InputStreamReader(in);
// Baca per Baris
BufferedReader pipaMasuk = new BufferedReader(inReader);
// Buka Saluran Keluar
OutputStream out = client.getOutputStream();
// Mengirim per Baris
PrintWriter pipaKeluar = new PrintWriter(out);
BufferedReader userIn = new BufferedReader(new InputStreamReader(System.in));
String balasanPesanDariServer = "";
String pesanClient = "";
do {
System.out.print("Send Message : ");
pesanClient = userIn.readLine();
// Menyiapkan Pesan di Saluran Keluar
pipaKeluar.println(pesanClient);
// Kirim Pesan ke Server
pipaKeluar.flush();
// Menerima Balasan dari Server
balasanPesanDariServer = pipaMasuk.readLine();
// Mencetak Pesan dari Server
System.out.println("Server Message : " + balasanPesanDariServer);
System.out.println();
} while ( (!pesanClient.equalsIgnoreCase("close")) );
}
catch (NumberFormatException nfe) {
System.err.println("Maaf, Anda Menggunakan Karakter. Pakai PORT Yang Sesuai.");
System.err.println("Contoh : 9090");
}
catch (IllegalArgumentException iae) {
System.err.println("Maaf, Anda Memasukkan Nilai PORT Yang Melebihi Jumlah PORT Yang Ada");
}
catch (BindException be) {
System.err.println("Maaf, PORT " + args[0] + " Telah Terpakai. Gunakan PORT Yang Lain.");
}
catch (SocketException se) {
System.err.println("Koneksi GAGAL !!. Server not connected !");
}
catch (NullPointerException npe) {
System.err.println("Koneksi REJECT !!.");
}
catch (IOException ioe) {
System.err.println("Terjadi Exception : " + ioe.toString());
}
}
}
Bagaimana, belum keriting kan tangannya? Untuk menjalankannya, anda harus mengkompilasinya setelah itu jalankan program AplikasiServer terlebih dahulu, baru kemudian buka command prompt yang kedua untuk menjalankan AplikasiClient. Berikut adalah cara mengeksekusinya.
Ups……. Saya juga sudah membuatkan file batch-nya, untuk memudahkan pengeksekusian. Sehingga kita cukup klik 2x pada file batch-nya. Berikut adalah kode programnya
Ini disimpan dengan nama AplikasiServer.bat, dan jangan lupa save as type-nya harus all files
@echo off
title Copyright RDP Laboratories ~~~ Server ~~~
cls
rem Petunjuk Penggunaan
rem Masukkan PORT
rem Contoh : java AplikasiServer 1080
java AplikasiServer 10
pause
Ini disimpan dengan nama AplikasiClient.bat, dan janga lupa save as type-nya harus all files.
@echo off
title Copyright RDP Laboratories ~~~ Client ~~~
cls
rem Petunjuk Penggunaan
rem Masukkan IP Address & PORT
rem Contoh : java AplikasiClient 127.0.0.1 20
rem Sesuaikan dengan PORT yang di Pakai Oleh AplikasiServer
rem Jika AplikasiServer Menggunakan PORT 10
rem Maka akan seperti ini : java AplikasiClient 127.0.0.1 10
java AplikasiClient 127.0.0.1 10
pause
Kini, anda bisa melakukan chating dengan diri sendiri. Aplikasi ini masih berjalan di console, nanti akan saya kasih yang berbasis GUI. Doakan saja, semoga masih ada otak di kepala ini untuk berfikir.
Sekian dari saya, semoga dapat bermanfaat dan kita dapat mengambil hikmah dari peristiwa ini(jadi ngelantur). Jika ada saran & kritik dapat dilayangkan via angin yang berhembus. Jika ada yang ingin memberi saya uang, dapat dilayangkan via khantonk ataw domvet saya.
Ketika 0 Telah Menjadi 1,
Ketika false Telah Menjadi true,
Ketika off Telah Menjadi on.
Thank’s to :
- My God Allah SWT, Kasih SayangMu Takkan Pernah Dapat Kuhitung
- My PC, Maafkan Aku Yang Telah Memaksamu Untuk Beroperasi Walau Dalam Keadaan Sekarat
Mau tanya donk. Aplikasi di atas aku jalanin di IDE Netbeans 6.7.1. Saya sudah buat package rdp.laboratories dan meletakkan class AplikasiServer di dalamnya. Ketika saya jalankan hasilnya :
Masukkan Port Yang Akan Digunakan
Contoh : 8080
Begitu terus. Tidak ada perintah untuk memasukkan nomor PORT. Berbeda halnya jika dijalankan melalui command prompt.
C:\>java AplikasiServer 100
Memang berhasil masuk.
Jadi gimana solusinya supaya dapat dijalankan di Netbeans?