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
Pada
program kali ini kita akan membuat aplikasi client-server TCP sederhana, dan
disini kita akan menggunakan bahasa pemrogrograman java.
SERVER
import java.io.*;
import java.net.*;
Program
ini akan memanggil semua fungsi yang terdapat pada library java.io dan java.net.
Library java.io yaitu library untuk proses input dan output melalui data
stream, sedangkan java.net yaitu library 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;
Kemudian kita akan 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 blok try pertama, checkServer akan
diberi nilai yaitu berupa nomor port. Selanjutnya server akan mencetak Aplikasi Server hidup ... pada layar monitor. Jika 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();
}
Blok 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);
}
Blok 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.
Jika server menerima pesan salam,
maka server akan membalas pesan salam
juga. Jika server menerima pesan
lainnya maka server akan membalas Maaf,
saya tidak mengerti”.
try
{
os.close();
is.close();
clientSocket.close();
}
catch (IOException ic) {
ic.printStackTrace();
}
}
}
Blok try keempat digunakan untuk menutup input,
ouput, dan koneksi.
CLIENT
import java.io.*;
import java.net.*;
Program
ini akan memanggil semua fungsi yang terdapat pada library java.io dan java.net.
Library java.io yaitu library untuk proses input dan output melalui data
stream, sedangkan 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 blok try pertama digunakan untuk
memulai koneksi dengan server menggunakan port yang telah dideklarasikan
sebelumnya. Jika 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);
}
Blok try kedua digunakan untuk menuliskan
atau mengirim pesan ke server. Pertama program akan mencetak Masukkan kata kunci: . Kemudian client akan menginput pesan yang 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();
}
Blok try ketiga digunakan untuk menerima
pesan dari server dan menampilkannya. 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);
}
}
}
Blok try keempat digunakan untuk menutup input,
ouput, dan koneksi.
OUTPUT PROGRAM
·
Compile file
simpleServer.java dan simpleClient.java
·
Jalankan
simpleServer.java
·
Buka command
prompt baru, lalu jalankan simpleClient.java, dan masukkan pesan untuk server.
·
Jika client
memasukkan pesan salam, maka pada sisi server akan masuk pesan salam, dan server
akan membalas pesan dari client dengan salam juga.
·
Jika client
memasukkan pesan selain dari salam, maka pada sisi server tetap akan masuk
pesan yang dikirim oleh client, tetapi server akan membalas pesan dari client
dengan Maaf, saya tidak mengerti.