LISTING PROGRAM
simpleServer.java
import java.io.*;
import java.net.*;
public class simpleServer {
public final static int TESTPORT = 5000;
public static void main(String args[]) {
ServerSocket checkServer = null;
String line;
BufferedReader is = null;
DataOutputStream os = null;
Socket clientSocket = null;
try {
checkServer = new
ServerSocket(TESTPORT);
System.out.println("Aplikasi
Server hidup ...");
} catch (IOException e) {
System.out.println(e);
}
try {
clientSocket = checkServer.accept();
is = new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
os = new
DataOutputStream(clientSocket.getOutputStream());
} catch (Exception ei) {
ei.printStackTrace();
}
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);
}
try {
os.close();
is.close();
clientSocket.close();
} catch (IOException ic) {
ic.printStackTrace();
}
}
}
simpleClient.java
import java.io.*;
import java.net.*;
public class simpleClient {
public final static int REMOTE_PORT = 5000;
public static void main(String args[]) throws Exception {
Socket cl = null;
BufferedReader is = null;
DataOutputStream os = null;
BufferedReader stdin = new BufferedReader(new
InputStreamReader(System.in));
String userInput = null;
String output = null;
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);
}
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);
}
try {
output = is.readLine();
System.out.println("Dari server:
" + output);
} catch (IOException e) {
e.printStackTrace();
}
try {
is.close();
os.close();
cl.close();
} catch (IOException x) {
System.out.println("Error
writing...." + x);
}
}
}
LOGIKA PROGRAM
Listing program kali ini berfungsi untuk membuat aplikasi client-server TCP
sederhana menggunakan bahasa
pemrogrograman java.
SERVER
import java.io.*;
import java.net.*;
Listing ini akan memanggil semua fungsi yang terdapat pada library library
java.io yang digunakan untuk proses input dan output melalui data stream, dan
java.net yang digunakan untuk
implementasi jaringan.
public class simpleServer {
public final static int TESTPORT = 5000;
Nama class pada program ini yaitu simpleServer, dan kita akan
mendeklarasikan port 5000 yang akan digunakan sebagai jalur komunikasi.
public static void main(String args[]) {
ServerSocket checkServer = null;
String line;
BufferedReader is = null;
DataOutputStream os = null;
Socket clientSocket = null;
Listing ini digunakan untuk mendeklarasikan variable yang akan dipakai di
dalam program ini, yaitu : checkServer sebagai ServerSocket yang
bernilai null (kosong), is sebagai BufferedReader yang bernilai null
(kosong), os sebagai DataOutputStream yang bernilai null (kosong), clientSocket sebagai socket yang
bernilai null (kosong), dan line dengan tipe data string.
try {
checkServer = new
ServerSocket(TESTPORT);
System.out.println("Aplikasi
Server hidup ...");
} catch (IOException e) {
System.out.println(e);
}
Pada fungsi try pertama, checkServer akan diberi nilai berupa
nomor port. Kemudian server akan mencetak Aplikasi Server hidup ... pada layar monitor. Apabila
ada error yang terjadi pada saat server dijalankan, maka error tersebut akan
ditangani oleh catch.
try {
clientSocket = checkServer.accept();
is = new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
os = new
DataOutputStream(clientSocket.getOutputStream());
} catch (Exception ei) {
ei.printStackTrace();
}
Fungsi try kedua digunakan untuk inisiasi
is dan os sebagai objek input dan output, serta untuk menerima
request client dengan clientsocket.
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);
}
Fungsi try ketiga digunakan untuk menerima dan mengirim pesan.
Variable line digunakan sebagai variable penampung inputan dari
client, lalu server akan mencetak Terima : diikuti dengan pesan yang diterima
dari client.
Apabila server menerima pesan salam, maka server akan membalas pesan salam juga. Apabila server menerima pesan lainnya
maka server akan membalas Maaf, saya tidak mengerti”.
try {
os.close();
is.close();
clientSocket.close();
} catch (IOException ic) {
ic.printStackTrace();
}
}
}
Fungsi try keempat digunakan untuk menutup input, ouput, dan
koneksi.
CLIENT
import java.io.*;
import java.net.*;
Listing program ini digunakan untuk memanggil semua fungsi yang terdapat
pada library java.io yaitu library untuk proses input dan output melalui data
stream, dan java.net yaitu library untuk implementasi jaringan.
public class simpleClient {
public final static int REMOTE_PORT = 5000;
Nama class pada program ini yaitu simpleClient, dan kita akan mendeklarasikan
port 5000 yang akan digunakan sebagai jalur komunikasi.
public static void main(String args[]) throws Exception {
Socket cl = null;
BufferedReader is = null;
DataOutputStream os = null;
BufferedReader stdin = new BufferedReader(new
InputStreamReader(System.in));
String userInput = null;
String output = null;
Kemudian kita akan mendeklarasikan variable yang akan dipakai di dalam
program ini, yaitu : cl sebagai Socket yang bernilai null
(kosong), is sebagai BufferedReader yang bernilai null
(kosong), os sebagai DataOutputStream yang bernilai null
(kosong), serta userInput dan output yang bernilai null (kosong)
dengan tipe data string.
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);
}
Pada fungsi try pertama digunakan untuk memulai koneksi dengan
server menggunakan port yang telah dideklarasikan sebelumnya. Apabila terjadi
error pada saat koneksi, maka catch akan berjalan dan memberikan
pesan error yang terjadi.
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);
}
Funfsi try kedua digunakan untuk menuliskan atau mengirim pesan
ke server. Pertama program akan mencetak Masukkan kata kunci: . Kemudian client akan
menginput pesan yang nantinya akan disimpan di dalam variable userInput, dan
akan dikirimkan ke server dengan perintah os.writeBytes().
try {
output = is.readLine();
System.out.println("Dari server:
" + output);
} catch (IOException e) {
e.printStackTrace();
}
Fungsi try ketiga digunakan untuk menerima pesan dari server dan
menampilkannya. Kemudian program akan mencetak string Dari server: diikuti dengan
variable output, yang merupakan pesan dari server.
try {
is.close();
os.close();
cl.close();
} catch (IOException x) {
System.out.println("Error
writing...." + x);
}
}
}
Fungsi try keempat digunakan untuk menutup input, ouput, dan
koneksi.
Output :
- Compile file simpleServer.java dan simpleClient.java
- Aktifkan simpleServer.java