Users  

   

Hobi  

   

Statistik  

Visitors
232
Articles
59
Articles View Hits
394923
   

User Online  

We have 69 guests and no members online

   

JAVA SOCKET

Details

Socket
Socket adalah satu ujung dari komunikasi dua arah antara dua buah aplikasi yang berjalan di
lingkungan jaringan. Class Socket digunakan untuk merepresentasikan koneksi antara apliksi
client dan server. Package java.net menyediakan dua buah class : Socket dan ServerSocket
yang mengimplementasikan client dan server.


Socket adalah jantung dari aplikasi network, setiap kali kita menghubungi aplikasi yang
berada di server / workstation berbeda kita harus menggunakan socket ini, seperti koneksi ke
database, koneksi ke server three tier dan sebagainya.
Komunikasi socket harus menggunakan protokol tertentu untuk mengatur bagaimana
mekanisme komunikasi antara dua buah workstation. Protokol bisa dianalogikan dalam proses
komunikasi dua orang manusia, kalau ingin berkomunikasi kita harus memanggil orang
tersebut untuk mendapatkan perhatianya, kemudian menunggu apakah orang ini bersedia
berkomunikasi dengan kita atau tidak, setelah keduanya sepakat berkomunikasi maka wajah
dan mata saling berhadapan untuk menandakan bahwa proses komunikasi bisa dilanjutkan,
setelah itu percakapan terjadi hingga keduanya sepakat untuk mengakhiri percakapan dan
saling memalingkan muka.
Protokol yang akan kita gunakan dalam contoh kita kali ini adalai TCP (Transmission Control
Protocol) yang sangat terkenal. Protokol ini menyediakan mekanisme komunikasi point-to-point
yang biasa digunakan dalam arsitektur client-server. Internet yang menggunakan protokol
HTTP untuk menampilkan halaman web juga menggunakan protokol TCP sebagai mekanisme
transfer data antara client (browser) dan server (webserver, website).
Contoh aplikasi yang akan kita buat sangat sederhana, yaitu aplikasi ping-pong. Server akan
berjalan terlebih dahulu, membuka port tertentu dan menunggu client mengirim data ping,
setelah ping diterima maka server akan mengirim balik data pong untuk diterima client.
Kode server sangat sederhana, langkah-langkah yang harus dilakukan oleh server adalah
sebagai berikut :
1. Membuka ServerSocket
2. Berusaha menerima client
3. membuat reader dan writer untuk menerima dan mengirim data ke client
4. dalam sebuah loop akan membaca data yang dikirim client
5. Kalau ada data yang dikirim client segera membalas dengan mengirim Pong ke client


Kode untuk Server :

import java.io.*;
import java.net.*;
public class PingPongServer {
public static void main(String[] args) {
try {
//1. buka server socket
ServerSocket server = new ServerSocket(4444);
System.out.println("Server ready. Listening in port 4444");
//2. berusaha menerima client
Socket clientSocket = server.accept();
System.out.println("Connection from client is excepted");
//3. membuat reader dan writer untuk menerima dan mengirim data ke client
BufferedWriter out = new BufferedWriter(
new OutputStreamWriter(clientSocket.getOutputStream()));
BufferedReader in = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
String inputLine = null;
//4. dalam sebuah loop akan membaca data yang dikirim client
while((inputLine = in.readLine())!=null){
System.out.println("Recieved " + inputLine + " from client");
//5. Kalau ada data yang dikirim client segera membalas dengan mengirim
//
Pong ke client
out.write("Pong\n");
System.out.println("Send Pong to client");
out.flush();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
Kode untuk server ini harus dijalankan terlebih dahulu sebelum client dijalankan.
Client akan melakukan beberapa langkah berikut ini ketika berkomunikasi dengan server :
1. Membuat client socket sekaligus menghubungi server
2. Membuat reader dan writer untuk membaca dan menulis data ke server
3. Dalam sebuah loop, kirim data ke server
4. Dalam loop yang sama berusaha terima data dari server
5. Dalam loop tersebut lakukan 1 detik pause agar output bisa terlihat bagus
Kode implementasinya sebagai berikut :
import java.io.*;
import java.net.*;
public class PingPongClient {
}
public static void main(String[] args) {
try {
//1. Membuat client socket sekaligus menghubungi server
Socket clientSocket = new Socket("localhost", 4444);
System.out.println("client konek to server localhost:4444");
//2. Membuat reader dan writer untuk membaca dan menulis data ke server
BufferedWriter out = new BufferedWriter(
new OutputStreamWriter(clientSocket.getOutputStream()));
BufferedReader in = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
do {
//3. Dalam sebuah loop, kirim data ke server
out.write("Ping\n");
System.out.println("Send ping to server");
out.flush();
//4. Dalam loop yang sama berusaha terima data dari server
String inputLine = in.readLine();
System.out.println("Recieved " + inputLine + " from server");
//5. Dalam loop tersebut lakukan 1 detik pause agar output bisa bagus
Thread.sleep(1000);
} while (true); //lakukan terus menerus
} catch (UnknownHostException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}


Selanjutnya compile dan jalankan server terlebih dahulu


$ javac PingPongServer.java
$ java PingPongServer

output :


Server ready. Listening in port 4444
Connection from client is excepted
Recieved Ping from client
Send Pong to client
Recieved Ping from client
.
.
.
Output di baris pertama dan kedua akan segera muncul setelah server dijalankan, baris
berikutnya akan muncul setelah client berjalan dan komunikasi client-server terjadi.

sekarang kita jalankan Client


$ javac PingPongClient.java
$ java PingPongClient
client konek to server localhost:4444
Send ping to server
Recieved Pong from server
Send ping to server
Recieved Pong from server

sumber : ifnubima.org

Comments   

 
-2 #1 Arjunoireng 2013-01-28 19:49
nice 8)
Quote
 

Add comment


Security code
Refresh

   

Indeks  

   
© ALLROUNDER