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
Program diatas dapat digunakan untuk membangun sebuah aplikasi client-server TCP sederhana dengan menggunakan
bahasa pemrograman java.
Server
import
java.io.*;
import
java.net.*;
Perintah diatas berfungsi untuk 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;
Perintah diatas berfungsi 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 blok try pertama, checkServer akan diberi
nilai yaitu berupa nomor port. Selanjutnya server akan menampilkan output “Aplikasi
Server hidup ...”. 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.*;
Perintah diatas berfungsi untuk 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;
Perintah diatas berfungsi untuk 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: “
yang 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
1. Compile terlebih dahulu file simpleServer.java, kemudian compile simpleClient.java
2. Jalankan sisi Server terlebih dahulu, setelah server hidup kemudian buka console shell yang baru lalu jalankan sisi Server. Selanjutnya ketikkan "salam" pada sisi Client, maka Server akan menerima pesan dari Client.
3. Ketikkan pesan yang berbeda pada sisi Client, maka akan tampil seperti berikut.
Tidak ada komentar:
Posting Komentar