Jumat, 29 April 2016

Membangun Aplikasi Client-Server TCP

Aplikasi Client-Server TCP dengan Java

1. Buat program server terlebih dahulu seperti di bawah ini, simpan dengan nama 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();
}
}
}

Pada Listing diatas menjelaskan tentang pembuatan program 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.

2. kemudian buat program client, simpan dengan nama 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;
// 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 kunci: ");
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);
}
}
}

3. Logika Program
Pada listing program merupakan kodingan client server dimana :
  • 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. 
4.  Kompilasi kedua program diatas dengan :
$ javac simpleServer.java
$ javac simpleClient.java

5. 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 <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 maka server akan mengirimkan pesan "maaf, saya tidak mengerti" kepada client.


0 komentar:

Posting Komentar

 

Dinar Dwi Cahya Template by Ipietoon Cute Blog Design and Bukit Gambang