Pemrograman Jaringan – Client Server

SERVER

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();
}
}
}

Penjelasan

Pada listing program diatas merupakan program client server. Program yang diatas merupakan program server yang digunakan untuk melayani yang diminta oleh client. Saat program dijalankan dan berhasil maka akan tampil “Aplikasi Server Hidup”

Server pertama dengan mengimport java. io merupakan singkatan dari Input Output. Input melibatkan masukan data dari peralatan input, sedangkan output akan menampilkan data kepada pengguna dan program mengimport java. net paket ini berisi kelas yang memperbolehkan program untuk berkomunikasi melalui jaringan pada sisi server.

CLIENT

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;

// Membuka koneksi ke server pada port REMOTE_PORT
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);
}

// Menulis ke server
try {
System.out.print("Masukkan kata kund : ");
userInput = stdin.readLine() ;
os.writeBytes(userInput + "\n");
}  catch (IOException ex) {
System.out.println("Error writing to server... " + ex);
}

// Menerima tanggapan dari server
try {
output = is.readLine() ;
System.out.println("Dari server: " + output);
} catch (IOException e) {
e.printStackTrace() ;
}

// close input stream, output stream dan koneksi
try {
is.close();
os.close();
cl.close();

} catch (IOException x) {
System.out.println("Error writing...." + x);
}
}
}

Penjelasan

Pada listing program diatas merupakan program client untuk mengirim pesan atau meminta data ke server. Program akan meminta masukan kunci dan kunci disini telah di deklarasikan dengan kata “salam” maka ketika mengetikan kata salam maka client akan mendapatkan data dari server yaitu salam. Namun jika mengetikan kata yang lain selain salam maka client akan mendapatkan data dari server yaitu “maaf, saya tidak mengerti.”

  • Untuk bisa melakukan koneksi client server, program server harus berjalan terlebih dahulu.
  • Di sisi server disediakan sebuah socket, yang disebut welcoming socket yang fungsinya untuk mendeteksi adanya permintaan koneksi dari sisi client.
  • Di sisi client terdapat client socket. Jika ingin menghubungi server, maka melalui client socket-nya, client membuat inisialisai koneksi ke welcoming socket milik server, dengan mode three-way handshake.
  • Setelah welcoming socket menerima inisialisasi koneksi dari client socket, aplikasi server akan membuat connection socket di sisi server. Dengan connection socket ini, client socket dan connection socket berinteraksi satu sama lain untuk mengirim dan menerima data.
  • Client membaca data yang dikirim oleh server dari client socket-nya. Kemudian menampilkan data tersebut di monitor.
  • Selanjutnya Client membaca inputan dari keyboard, kemudian mengirimkan hasilnya ke server melalui socket-nya.
  • Server membaca data yang dikirim oleh client di connection socket
  • Server mengubah data menjadi huruf besar
  • Server mengirimkan data yang telah diubah menuju client melalui socket-nya.
  • Client membaca data yang dikirim oleh server dari client socket-nya. Kemudian menampilkan data tersebut di monitor.

Cara Menjalankan :

  •  Kompilasi kedua program diatas dengan :

    javac simpleServer.java

    javac simpleClient.java

  • Jalankan kedua program tersebut dikomputer anda. Pertama jalankan server, (buka jendela console shell lebih dulu), dan tunggu koneksi client.  java simpleServer
  • Untuk menjalankan program client buka jendela console shell baru dan ketikkan. java simpleClient

Output Program Client

tes2

Output Program Server

tes1

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 maka server akan mengirimkan pesan “maaf, saya tidak mengerti” kepada client.
Referensi :