Source Code Untuk Membangun Aplikasi Client-Server TCP Sederhana
Pada
penulisan ini, saya akan membuat sebuah program menggunakan bahasa
Pemrograman Java untuk membangun
aplikasi client-server TCP sederhana. disini saya akan membuat 2 source code
yang masing-masing berguna untuk membuat aplikasi pada sisi client dan satu
lagi untuk aplikasi pada sisi server.
Saya akan
menjelaskan source code pada sisi client dan server. Saya akan mulai dengan
source pada sisi server terlebih dahulu.
a.
Server
Berikut listing programnya :
Berikut
penjelasannya :
import java.io.*;
Pada
source code diatas berfungsi untuk mengimport atau pemanggilan method/fungsi
yang terdapat dalam library io. IO ini berisikan fungsi-fungsi input dan output
yang berguna untuk program ini. Source code selajutnya yaitu :
import java.net.*;
Source
code diatas berfungsi untuk pemanggilan kelas dari method “java.net” pada
pemrograman java dimana kelas method tersebut berguna untuk membuat suatu
komunikasi jaringan dalam sebuah program. Lalu baris source code selanjutnya
yaitu :
public class simpleServer {
Source
code diatas maksudnya kita akan membuat class dengan nama simpleServer. Lalu
source code selanjutnya yaitu :
public final static int TESTPORT = 5000;
Source
diatas berfungsi untuk mendeklarasikan variable TESTPORT dengan tipe data
integer yang bernilai 5000. Variable ini nantinya tidak bisa dimodifikasi atau
diubah didalam program. source code selanjutnya yaitu :
public static void main(String args[]) {
Source
code diatas berisikan perintah yang harus kita tulis ketika kita ingin membuat
program. Source ini mengindikasikan nama suatu method dalam class yang kita
buat, yang bertindak sebagai method utama. Lalu source code selanjutnya :
ServerSocket checkServer = null;
Source
code diatas berfungsi untuk mendeklarasikan nilai null pada objek checkServer
yang bertipe ServerSocket, dimana Socket adalah titik akhir untuk komunikasi
antara dua mesin. Source code selanjutnya yaitu :
BufferedReader is = null;
Source
code diatas berfungsi untuk mendeklarasikan nilai null pada objek is yang
bertipe BufferedReader, dimana BufferedReader adalah perintah untuk mendapatkan
input dari keyboard. Source code selanjutnya yaitu :
DataOutputStream os = null;
Source
code diatas berfungsi untuk mendeklarasikan nilai null pada objek os yang
bertipe DataOutputStream, dimana DataOutputStream adalah class yang menyediakan
cara praktis untuk menuliskan tipe data primitive ke output stream. Source code
selanjutnya yaitu :
Socket clientSocket = null;
Source
code diatas berfungsi untuk mendeklarasikan nilai null pada objek clientSocket
yang bertipe Socket, dimana Socket adalah titik akhir untuk komunikasi antara
dua mesin. Source code selanjutnya yaitu :
try {
checkServer = new ServerSocket(TESTPORT);
System.out.println("Aplikasi Server hidup
...");
} catch (IOException e) {
System.out.println(e);
}
Source code diatas merupakan perintah
try catch yang berfungsi menangani suatu kesalahan atau error pada suatu listing
program. Program akan menjalankan listing program yang terdapat di dalam blok
try yaitu objek checkServer akan membuat stream ServerSocket dan menghubungkan
port tertentu yang sudah ditentukan diawal source code program. Jika
checkServer memiliki saluran/port yang terkait, maka akan dicetak teks
“Aplikasi Server Hidup …”. Kemudian catch akan menangkap exception berupa
IOException. Apabila terjadi kesalahan, maka akan mencetak kesalahan tersebut. Lalu
source code selanjutnya yaitu :
try {
clientSocket = checkServer.accept();
is = new BufferedReader(newInputStreamReader(clientSocket.getInputStream()));
os = new
DataOutputStream(clientSocket.getOutputStream());
} catch (Exception ei) {
ei.printStackTrace();
}
Source
diatas adalah perintah try catch kedua pada program ini. Perintah yang terdapat
pada blok try yaitu menerima nilai clientSocket jika sama dengan nilai
checkServer. Jika sudah diterima, maka client dapat melakukan perintah input
dari keyboard. Nilai inputan tersebut akan disimpan dalam variabel is.
Kemudian
DataOutputStream berfungsi untuk menyimpan data yang nantinya akan dikeluarkan
atau ditampilkan pada layar. Data tersebut akan disimpan didalam variabel os.
Lalu catch akan menangkap exception
berupa IOException. Lalu ei.printStackTrace(); untuk mencetak throwable dan
backtrace untuk stream standard error. Metode ini mencetak jejak stack untuk
objek. Lalu source code selanjutnya yaitu :
try {
line = is.readLine();
System.out.println("Terima : " + line);
if (line.compareTo("salam") == 0) {
os.writeBytes("salam juga");
} else {
os.writeBytes("Maaf, saya tidak mengerti");
}
} catch (IOException e) {
System.out.println(e);
}
Source
diatas adalah perintah try catch ketiga pada program ini. Perintah yang terdapat
pada blok try yaitu menginisialisasi nilai line yang diambil dengan membaca
pada inputan yang kita masukkan di variabel is. Lalu akan mencetak teks “Terima
:” yang disertai nilai dari line.
Kemudian
terdapat perintah percabangan if else. Pada blok if, jika nilai line sama
dengan “salam”, maka akan dicetak teks “salam juga”. Namun apabila kondisi
tersebut tidak terpenuhi akan menjalankan perintah pada blok else yaitu
mencetak teks “Maaf, saya tidak mengerti”.
Kemudian catch akan menangkap
exception berupa IOException. Apabila terjadi kesalahan, maka akan mencetak
kesalahan tersebut. Lalu source code selanjutnya yaitu :
try {
os.close();
is.close();
clientSocket.close();
} catch (IOException ic) {
ic.printStackTrace(); }
} }
Source
diatas adalah perintah try catch ketiga pada program ini. Perintah yang
terdapat pada blok try yaitu menutup program yang kita jalankan seperti input
stream, output stream dan koneksi.
Lalu catch akan menangkap exception
berupa IOException. Lalu ic.printStackTrace(); untuk mencetak throwable dan
backtrace untuk stream standard error. Metode ini mencetak jejak stack untuk
objek.
b.
Client
Berikut
source code untuk sisi client :
Berikut
penjelasannya :
import java.io.*;
Pada
source code diatas berfungsi untuk mengimport atau pemanggilan method/fungsi
yang terdapat dalam library io. IO ini berisikan fungsi-fungsi input dan output
yang berguna untuk program ini. Source code selajutnya yaitu :
import java.net.*;
Source
code diatas berfungsi untuk pemanggilan kelas dari method “java.net” pada
pemrograman java dimana kelas method tersebut berguna untuk membuat suatu
komunikasi jaringan dalam sebuah program. Lalu baris source code selanjutnya
yaitu :
public class simpleClient{
Source
code diatas maksudnya kita akan membuat class dengan nama simpleClient. Lalu
source code selanjutnya yaitu :
public final static int REMOTE_PORT = 5000;
Source
diatas berfungsi untuk mendeklarasikan variable REMOTE_PORT dengan tipe data
integer yang bernilai 5000. Variable ini nantinya tidak bisa dimodifikasi atau
diubah didalam program. source code selanjutnya yaitu :
public static void main(String args[]) throws Exception {
Source code diatas berisikan perintah
yang harus kita tulis ketika kita ingin membuat program. Source ini
mengindikasikan nama suatu method dalam class yang kita buat, yang bertindak
sebagai method utama. Throws exception digunakan untuk memberitahu bahwa method
yang bersangkutan dapat melempar eksepsi dengan tipe yang dideklarasikan oleh
keyword throws tersebut. Lalu source code selanjutnya :
Socket cl = null;
Source
code diatas berfungsi untuk mendeklarasikan nilai null pada objek clientSocket
yang bertipe Socket, dimana Socket adalah titik akhir untuk komunikasi antara
dua mesin. Source code selanjutnya yaitu :
BufferedReader is = null;
Source
code diatas berfungsi untuk mendeklarasikan nilai null pada objek is yang
bertipe BufferedReader, dimana BufferedReader adalah perintah untuk mendapatkan
input dari keyboard. Source code selanjutnya yaitu :
DataOutputStream os = null;
Source
code diatas berfungsi untuk mendeklarasikan nilai null pada objek os yang
bertipe DataOutputStream, dimana DataOutputStream adalah class yang menyediakan
cara praktis untuk menuliskan tipe data primitive ke output stream. Source code
selanjutnya yaitu :
BufferedReader stdin = new BufferedReader(newInputStreamReader(System.in));
Source
code diatas berfungsi untuk membuat objek baru bernama BufferedReader stdin
dengan mengirim parameter berupa InputStreamReader(System.in) untuk menyuplai
data inputan. Source code selanjutnya yaitu :
String userInput = null;
Source
code diatas berfungsi untuk mendeklarasikan nilai null pada objek userInput
yang bertipe String. Source code selanjutnya yaitu :
String output = null;
Source
code diatas berfungsi untuk mendeklarasikan nilai null pada objek output yang
bertipe String. Source code selanjutnya yaitu :
try {
cl = new Socket(args[0], REMOTE_PORT);
is = new BufferedReader(new
InputStreamReader(cl.getInputStream()));
os = new
DataOutputStream(cl.getOutputStream());
} catch(UnknownHostException e1) {
System.out.println("Unknown Host: "
+ e1);
} catch (IOException e2) {
System.out.println("Erorr io: " +
e2);
}
Source
code diatas merupakan perintah try catch yang berfungsi menangani suatu
kesalahan atau error pada suatu listing program. Program akan menjalankan
listing program yang terdapat di dalam blok try yaitu objek cl akan membuat
stream Socket dan menghubungkan port tertentu yang sudah ditentukan diawal
source code program. Jika sudah
diterima, maka client dapat melakukan perintah input dari keyboard. Nilai
inputan tersebut akan disimpan dalam variabel is.
Kemudian
DataOutputStream berfungsi untuk menyimpan data yang nantinya akan dikeluarkan
atau ditampilkan pada layar. Data tersebut akan disimpan didalam variabel os.
Kemudian
source diatas terdapat 2 catch yang akan menangkap exception berupa
IOException. Apabila terjadi kesalahan pada catch pertama, maka akan mencetak ”Unknown
Host :“ disertai dengan kesalahan e1. Apabila terjadi kesalahan pada catch
kedua, maka akan mencetak”Error io :“ disertai dengan kesalahan e2. Lalu source
code selanjutnya yaitu :
try {
System.out.print("Masukkan kata kunci:
");
userInput = stdin.readLine();
os.writeBytes(userInput + "\n");
} catch (IOException ex) {
System.out.println("Error writing to
server..." + ex);
}
Source
diatas adalah perintah try catch kedua pada program ini yang berfungsi untuk
menulis ke server. Perintah yang terdapat pada blok try yaitu mencetak teks
“Masukkan kata kunci : “. Kemudian menginisialisasi nilai userInput yang
diambil dengan membaca pada inputan yang kita masukkan di variabel stdin dan
mecentak enter.
Kemudian
catch yang akan menangkap exception berupa IOException. Apabila terjadi
kesalahan, maka akan mencetak “Error writing to server... “ disertai dengan
kesalahan ex. Lalu source code selanjutnya yaitu :
try {
output = is.readLine();
System.out.println("Dari server: " +
output);
} catch (IOException e) {
e.printStackTrace();
}
Source
diatas adalah perintah try catch ketiga pada program ini yang berfungsi
menerima tanggapan dari server. Perintah yang terdapat pada blok try yaitu
menginisialisasi nilai output yang diambil dengan membaca pada inputan yang
kita masukkan di variabel is. Lalu akan mencetak teks “Dari server: ” yang
disertai nilai dari output.
Lalu catch akan menangkap exception
berupa IOException. Lalu ei.printStackTrace(); untuk mencetak throwable dan
backtrace untuk stream standard error. Metode ini mencetak jejak stack untuk
objek. Lalu source code selanjutnya yaitu :
try {
is.close();
os.close();
cl.close();
} catch (IOException x) {
System.out.println("Error
writing...." + x); }
} }
Source
diatas adalah perintah try catch ketiga pada program ini. Perintah yang
terdapat pada blok try yaitu menutup program yang kita jalankan seperti input
stream, output stream dan koneksi.
Kemudian
catch yang akan menangkap exception berupa IOException. Apabila terjadi
kesalahan, maka akan mencetak “Error writing.... “ disertai dengan kesalahan x.
c.
Menjalankan Aplikasi Client-Server
Pertama
Kompilasi kedua program diatas dengan mengetik berikut pada cmd:
javac simpleServer.java
javac simpleClient.java
Jalankan
kedua program tersebut dikomputer anda. Pertama jalankan server, (buka jendela
console shell lebih dulu), kemudian ketikkan perintah dibawah ini dan tunggu koneksi client.
java simpleServer
Untuk
menjalankan program client buka jendela console shell baru dan ketikkan.
java simpleClient <nama-komputer-server>
Pada
aplikasi client, masukkan kata kunci yang diminta, yaitu “salam”. Perhatikan apa
terjadi kemudian di sisi aplikasi Server maupun client. Coba juga Anda memasukkan
kata-kata yang lain.
Berikut
outputnya jika kita mengetiknya sesuai aturan :
Berikut
outputnya jika kita mengetiknya tidak sesuai aturan :