PEMROGRAMAN TCP SOCKET
Jumat, 13 Desember 2013
2
komentar
Socket adalah sebuah abstraksi perangkat
lunak yang digunakan sebagai suatu “terminal” dari suatu hubungan
antara dua mesin atau proses yang saling berinterkoneksi. (Wiharto,
2010)
Ada beberapa langkah yang harus dilakukan untuk dapat berkomunikasi melalui socket dengan TCP. Di sini saya memberi contoh sederhana menggunakan bahasa pemrograman Java dengan editor netbeans.
Socket dapat melakukan beberapa operasi yakni : koneksi ke mesin remote, mengirim data (write), menerima data (read), menutup koneksi (close), bind to port, listen pada data yang masuk dan menerima koneksi dari mesin remote pada port tertentu. Karena namanya saja socket programming, maka masing-masing mesin yang saling berinteraksi harus terpasang socket pula.
Ada beberapa langkah yang harus dilakukan untuk dapat berkomunikasi melalui socket dengan TCP. Di sini saya memberi contoh sederhana menggunakan bahasa pemrograman Java dengan editor netbeans.
Socket dapat melakukan beberapa operasi yakni : koneksi ke mesin remote, mengirim data (write), menerima data (read), menutup koneksi (close), bind to port, listen pada data yang masuk dan menerima koneksi dari mesin remote pada port tertentu. Karena namanya saja socket programming, maka masing-masing mesin yang saling berinteraksi harus terpasang socket pula.
TCP
Dalam socket programming dapat dibangun dengan menggunakan model paket TCP (untuk connection oriented).
TCP (Transmission Control Protocol) merupakan protokol yang bersifat connection-oriented, artinya komunikasi yang melewatinya membutuhkan handshaking untuk mengatur koneksi end-to-end. Koneksi dapat dibuat dari client ke server, dan kemudian banyak data dapat dikirimkan melalui koneksi itu.
Berikut adalah contoh source programnya :
*Program sisi server untuk single-line text echo*
// Server yang mengirim kembali
pesan dari client
// Pada akhir dialog, mengirim
pesan yang mengindikasikan jumlah pesan
// yang diterima. Menggunakan
TCP.
import java.io.*;
import java.net.*;
/**
* applikasi ini adalah applikasi server yang
menerima string dari applikasi client dan mengembalikan string tersebut kepada
applikasi client, dimana applikasi ini menggunakan protocol TCP / transmission
control protocol
* @author Muhammad Luthfi Kasim P2700211436
*/
public class TCPEchoServer {
/**
* Deklarasi variabel statik socket dan
port
*/
private static ServerSocket servSock;
private static final int PORT = 1234;
/**
* prosedur utama dari applikasi
* @param args
*/
public static void main(String[] args) {
/**
* menampilkan pesan membuka port
*/
System.out.println("Opening
port...\n");
try {
/**
* membuka socket sesuai dengan
port yang diberikan
*/
servSock = new ServerSocket(PORT);
} catch (Exception e) {
/**
* menampilkan pesan jika tidak
dapat membuka server
*/
System.out.println("unable to
attach to port!");
/**
* keluar dari applikasi
*/
System.exit(1);
}
do {
/**
* jalankan prosedur run
*/
run();
} while (true);
}
/**
* prosedur ini menerima kiriman pesan
melalui socket dari applikasi client
*/
private static void run(){
/**
* deklarasi variabel link bertipe
socket
*/
Socket link = null;
try {
/**
* menyimpan server socket
*/
link = servSock.accept();
/**
* deklarasi variabel in yang
menyimpan pesan diterima melalui socket
*/
BufferedReader in = new
BufferedReader(new InputStreamReader(link.getInputStream()));
/**
* deklarasi variabel out yang
bertipe printwriter
*/
PrintWriter out = new
PrintWriter(link.getOutputStream(),true);
/**
* deklarasi variabel numPesan
bertipe integer yang berfungsi menghitung banyaknya pesan
*/
int numPesan = 0;
/**
* deklarasi variabel pesan bertipe
string dan inisialisasi variabel tersebut dari pesan yang dikirimkan oleh
applikasi client
*/
String pesan = in.readLine();
/**
* membaca pesan dari applikasi
client hingga mencapai kata kunci selesai dimana kata kunci itu adakah
"***TUTUP***"
*/
while(!pesan.equals("***TUTUP***")){
/**
* menampilkan pesan
"Pesan diterima"
*/
System.out.println("Pesan
diterima");
/**
* menambah jumlah pesan yang
diterima dari applikasi client
*/
numPesan++;
/**
* menampilkan jumlah pesan
yang diterima
*/
System.out.println("Pesan
"+ numPesan + ": " + pesan);
/**
* mengganti isi pesan yang
lama dengan pesan yang baru, dimana isi variabel pesan diambil variabel in
*/
pesan = in.readLine();
}
/**
* menampilkan pesan "Pesan
diterima"
*/
System.out.println(numPesan+"
pesan diterima");
} catch (IOException e) {
e.printStackTrace();
}
/**
* penutupan koneksi untuk mencegah
kebocoran resource, dimana blok finally akan tetap dieksekusi meskipun terjadi
permasalah pada blok try and catch
*/
finally {
try {
/**
* menampilkan pesan
"Menutup koneksi...."
*/
System.out.println("\n*
Menutup koneksi....*");
/**
* menutup koneksi
*/
link.close();
} catch (IOException e) {
/**
* menampilkan pesan "Tidak
dapat menutup koneksi!"
*/
System.out.println("Tidak
dapat menutup koneksi!");
/**
* perintah untuk keluar dari
program
*/
System.exit(1);
}
}
}
} *Program sisi client untuk single-line text echo*
import java.io.*;
import java.net.*;
/**
* applikasi ini adalah applikasi client yang
mengirim string ke applikasi server dan menerima string tersebut dari applikasi
server, dimana applikasi ini menggunakan protocol TCP / transmission control
protocol
* @author Muhammad Luthfi Kasim P2700211436
*/
public class TCPEchoClient {
/**
* Deklarasi variabel statik socket dan port
*/
private static InetAddress host;
private static final int PORT = 1234;
/**
* prosedur utama dari applikasi
* @param args
*/
public static void main(String[] args) {
try {
/**
* mendapatkan ip address dari
server localhost
*/
host = InetAddress.getLocalHost();
}
catch (UnknownHostException e) {
/**
* menampilkan pesan "ID Host
tidak ditemukan" jika IP Address localhost
*/
System.out.println("ID Host
tidak ditemukan");
System.exit(1);
}
/**
* jalankan prosedur run jika berhasil
mendapatkan IP Address localhost
*/
run();
}
/**
* Prosedur ini membuka socket berdasarkan
IP Address dan port
*/
private static void run(){
/**
* deklarasi variabel link bertype
socket
*/
Socket link = null; //tahap 1.
try {
/**
* inisialisasi variabel link
*/
link = new Socket(host, PORT);
//tahap 1.
/**
* inisialisasi variabel in untuk
menerima pesan dari applikasi server
*/
BufferedReader in = new
BufferedReader(new InputStreamReader(link.getInputStream())); //tahap 2.
/**
* memindahkan isi pesan dari
variabel in ke variabel out
*/
PrintWriter out = new
PrintWriter(link.getOutputStream(),true); //tahap 2.
//set up stream for keyboard entry
/**
* menerima stream input dari
interface keyboard
*/
BufferedReader userEntry = new
BufferedReader(new InputStreamReader(System.in));
/**
* deklarasi variabel pesan dan
respon bertipe string
*/
String pesan, respon;
/**
* menampilkan output ke pengguna
hingga pengguna menuliskan pesan "***TUTUP***"
*/
do {
System.out.print("Tulis
pesan: ");
pesan = userEntry.readLine();
out.println(pesan); //tahap 3.
respon = in.readLine(); //tahap
3.
System.out.println("\nServer> "+respon+"\n");
} while
(!pesan.equals("***TUTUP***"));
} catch (IOException e) {
e.printStackTrace();
}
/**
* penutupan koneksi untuk mencegah
kebocoran resource, dimana blok finally akan tetap dieksekusi meskipun terjadi
permasalah pada blok try and catch
*/
finally {
try {
/**
* menampilkan pesan
"Menutup koneksi...."
*/
System.out.println("\n*
Menutup koneksi...*");
/**
* menutup koneksi
*/
link.close(); //tahap 4.
} catch (IOException e) {
/**
* menampilkan pesan "Tidak
dapat menutup koneksi!"
*/
System.out.println("Tidak
dapat menutup koneksi!");
/**
* perintah untuk keluar dari
program
*/
System.exit(1);
}
}
}
}
TERIMA KASIH ATAS KUNJUNGAN SAUDARA
Judul:
PEMROGRAMAN TCP SOCKET
Ditulis oleh Unknown
Rating Blog 5 dari 5
Semoga artikel ini bermanfaat bagi saudara. Jika ingin mengutip, baik itu sebagian atau keseluruhan dari isi artikel ini harap menyertakan link dofollow ke
http://dua7an.blogspot.com/2013/12/pemrograman-tcp-socket.html
. Terima kasih sudah singgah membaca artikel ini.
Ditulis oleh Unknown
Rating Blog 5 dari 5
2 komentar :
yang punya blog,,, dosen ane ternyata.... :D
permisi gan, saya ada sedikit tulisan mengenai protokol websocket dalam beberapa bahasa pemrograman berikut: http://datacomlink.blogspot.co.id/2015/11/implementasi-server-websocket-rfc-6455.html ditunggu feedback-nya ya gan, semoga menambah wawasan bersama.. terima kasih gan..
Posting Komentar