Pemrograman Socket menggunakan TCP

advertisement
Pemrograman Socket menggunakan TCP
Wiranti Sri Utami
[email protected]
Abstrak
Java menyediakan kelas dan method yang memungkinkan dua program untuk saling
berkomunikasi didalam sebuah jaringan komputer menggunakan TCP (Transmission
Control Protocol). Pada model TCP digunakan konsep connection oriented dan reliable
data transfer antara aplikasi client dan server. Agar dua program dapat berkomunikasi
menggunakan TCP, masing-masing program harus membuat socket, yang kemudian
socket-socket tersebut harus terhubung satu sama lain. Dalam hal ini dua socket akan
digunakan, pertama suatu program harus membuat socket yang menunggu secara pasif
hingga koneksi lain dari socket lain di komputer lain datang. Socket yang sedang
menunggu ini disebut sedang "mendengar" (listening) suatu koneksi. Di sisi lain di
komputer lain, program lain membuat socket yang mengirim permintaan sambungan ke
socket pendengar tadi. Ketika socket pendengar menerima permintaan sambungan dari
socket lain, socket ini akan merespon, sehingga komunikasi akan terjadi. Begitu
komunikasi terjadi, maka masing-masing program akan bisa membuat aliran input dan
aliran output untuk koneksi ini. Komunikasi akan terus terjadi hingga salah satu
program menutup (close) koneksi.
Kata Kunci : socket, TCP
Pendahuluan
Penulisan arikel ini hanya membahas mengenai pemrograman socket menggunakan
TCP dan untuk pembahasan mengenai pemrograman socket menggunakan UDP akan
Lisensi Dokumen:
Copyright © 2008-2014 ilmuti.org
Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial
(nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap
dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
dibahas pada artikel selanjutnya. Pada penulisan artikel ini bertujuan agar para pembaca
dapat mengenal pemrograman socket dengan TCP. Manfaat dari penulisan artikel ini
yaitu pembaca dapat membuat sebuah aplikasi client server dengan pemrograman
socket menggunakan TCP. Ada beberapa langkah yang harus dilakukan untuk dapat
membuat aplikasi client server, dalam penulisan artikel ini penulis membuat aplikasi
client server menggunakan bahasa pemrograman Java dan menggunakan editor
notepad++. Penulis berharap dengan adanya artikel ini dapat membantu para pembaca
yang ingin mendalami pemrograman Java demi terwujudnya generasi muda yang
memiliki
kreativitas
seperti
dalam
bidang
pemrograman
komputer
dengan
menggunakan bahasa pemrograman Java.
Pembahasan
TCP socket merupakan bagian dari pemrograman jaringan pada Java, yang
terdiri dari kelas socket seperti socket kelas untuk membuat sebuah client socket dan
serversocket kelas untuk membuat sebuah server socket, untuk dapat berkomunikasi
didalam jaringan komputer. Didalam socket dapat melakukan beberapa operasi yaitu
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, kemudian pada masing-masing mesin yang saling
berinteraksi harus terpasang sebuah socket.
 Data Stream
Data stream meruapakan inti utama dalam proses input atau output dalam
pemrograman java. Data stream adalah sebuah aliran data, tepatnya sebuah pipeline atau
pipa, seorang user atau pengguna dapat menuliskan sebuah informasi dan membacanya
dari sebuah pipeline. Dalam sebuah socket, suatu informasi hanya dapat dibaca dan
ditulis (read and write). Pada pemrograman Java kita dapat membaca informasi dengan
menggunakan class OutputStream dan menulis informasi menggunakan class Input
Lisensi Dokumen:
Copyright © 2008-2014 ilmuti.org
Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial
(nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap
dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
Stream. Ketika sebuah koneksi sukses, setiap end-point akan menciptakan InputStream
dan
OutputStream.
InputStream
di
ciptakan
dengan
menggunakan
method
getInputStream(), dan OutputStream diciptakan dengan menggunakan method
getOutputStream(). (Wiharto, 2010)
Di dalam stream, user diperbolehkan untuk melakukan proses read dan write
dengan single byte ataupun multiple byte. Lantas untuk melakukannya, di sini adalah
beberapa class penting dari package java.io.* yang dapat digunakan dalam membangun
socket programming
- BufferedReader dan BufferedWriter : Untuk input dan output stream dengan
menggunakan buffer.
- FilterInputStream dan FilterOutputStream: dapat dibangun dengan membuat instace
dari InputStream dan OutputStream (keduanya tidak menggunakan buffer).
Perbaikan kinerja yang diberikan adalah dengan adanya konsep caching dan
flushing.
- DataInputStream dan DataOutputStream : menyediakan servis tingkat tinggi untuk
proses read dan write terhadap type data primitive
- FileReader, FileWriter, FileInputStream dan FileOutputStream: digunakan untuk
pembacaan dan penulisan dari dan ke suatu file.
 Cara kerja aplikasi client server dengan pemrograman socket menggunakan
TCP
Untuk dapat melakukan koneksi client server, program server harus berjalan
terlebih dahulu untuk mendeteksi adanya permintaan koneksi dari sisi client. Disisi
client terdapat client socket milik server. Setelah socket menerima inisialisasi koneksi
dari client socket, aplikasi server akan membuat connection socket disisi server. Dengan
connection socket ini, client socket dan connection socket berinteraksi satu sama lain
untuk mengirim dan menerma data. Client membaca data yang dikirim oleh server dari
client socketnya, kemudian menampilkan data tersebut dimonitor.
Lisensi Dokumen:
Copyright © 2008-2014 ilmuti.org
Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial
(nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap
dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
Ada beberapa tahapan dalam pemrograman socket, yaitu : open socket,
menciptakan sebuah input data stream, menciptakan sebuah output data stream dan
close socket.
Open Socket
Untuk sisi client, berikut ini merupakan proses open socket:
Socket socket = null;
String host = “127.0.0.1″;
int port = 3456;
socket = new Socket(host, port);
Sedangkan untuk sisi server:
ServerSocket server = null;
int port = 3456;
server = new ServerSocket(port);
Ketika server telah running, tentunya jika ada client yang ingin melakukan
koneksi maka untuk menerima koneksi dari client, code di sisi server adalah sebagai
berikut:
Socket servis = null;
servis = server.accept();
Menciptakan Input stream dan Output stream
Input stream digunakan untuk menerima atau membaca data dari device lain
sedangkan output stream digunakan untuk mengirim data ke device lain, adapun kode
dari sisi client maupun server adalah sama, sebagai berikut :
BufferedReader is = null;
Lisensi Dokumen:
Copyright © 2008-2014 ilmuti.org
Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial
(nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap
dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
DataOutputStream os = null;
is = new BufferedReader(new InputStreamReader(servis.getInputStream()));
os = new DataOutputStream(servis.getOutputStream());
Close socket
Berikut ini merupakan proses close socket:
os.close();
is.close();
sedangkan pada sisi servernya adalah:
os.close();
is.close();
servis.close();
 List program aplikasi client server dengan pemrograman socket menggunakan
TCP
- Berikut ini list program untuk aplikasi servernya, sebagai berikut :
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket server = null;
Socket servis = null;
BufferedReader st = new BufferedReader(new InputStreamReader(System.in));
BufferedReader is = null;
DataOutputStream os = null;
int port = 3456;
String ic, isr;
Lisensi Dokumen:
Copyright © 2008-2014 ilmuti.org
Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial
(nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap
dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
try {
server = new ServerSocket(port);
System.out.println("Server running ..........");
servis = server.accept();
is = new BufferedReader(new InputStreamReader(servis.getInputStream()));
os = new DataOutputStream(servis.getOutputStream());
ic = is.readLine();
System.out.println("Client said :" + ic);
System.out.print("Reply :");
isr = st.readLine();
os.writeBytes(isr);
}catch (Exception e){
System.out.println("Error");
}
}
}
- Berikut ini list program untuk aplikasi clientnya, sebagai berikut :
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
Socket socket = null;
BufferedReader is = null;
DataOutputStream os = null;
BufferedReader st = new BufferedReader(new InputStreamReader(System.in));
String ic, isr;
String host = "127.0.0.1";
int port = 3456;
Lisensi Dokumen:
Copyright © 2008-2014 ilmuti.org
Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial
(nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap
dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
try {
socket = new Socket(host, port);
is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
os = new DataOutputStream(socket.getOutputStream());
System.out.print("You wanna say :");
ic = st.readLine();
os.writeBytes(ic);
isr = is.readLine();
System.out.print("And server said :" + isr);
} catch (Exception e) {
System.out.println("Error");
}
}
}
Penutup
Didalam bahasa pemrograman Java terdapat pemrograman jaringan seperti
pemrograman socket menggunakan TCP. TCP (Transmission Control Protocol)
merupakan protokol yang bersifat connection-oriented, artinya komunikasi yang
melewatinya membutuhkan handshaking untuk mengatur koneksi end-to-end. Sehingga
kita dapat membuat sebuah aplikasi client server dengan pemrograman socket
menggunakan TCP yang didalamnya terdapat komunikasi dua arah sepeti dari client ke
server, dan kemudian banyak data dapat dikirimkan melalui koneksi tersebut.
Demikianlah artikel ini dibuat, semoga artikel ini dapat bermanfaat bagi para
pembaca dalam bidang pemrograman komputer dan semoga para pembaca dapat
mencoba membuat sebuah aplikasi client server sederhana dengan programan socket
menggunakan TCP.
Referensi
http://dhealf.com/programming/pemrograman-socket-dengan-tcp.html
Wiharto. 2010. Modul Pemrograman Socket Dengan Paket TCP. Laboratorium Sistem
Terdistribusi Teknik Informatika, Universitas Sebelas Maret, Surakarta
Lisensi Dokumen:
Copyright © 2008-2014 ilmuti.org
Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial
(nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap
dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
http://dnaite.blogspot.com/2010/10/sekilas-tentang-sockettcp-dan-udp.html
http://mzsay.blogspot.com/2012/04/pengertian-socket-danpemrogramman.html#.U0edu1FU5JE
http://wahyuganteng72.blogspot.com/2011/02/jaringan-network-dalampemrograman.html
Biografi
Wiranti Sri Utami. Lahir di Tangerang, pada bulan November. Telah
menyelesaikan pendidikan dasar dan menengah di SD Negeri 2 Teluknaga
dan SMP Negeri 1 Teluknaga. Menamatkan SMA di SMA Negeri 6
Tangerang pada tahun 2008. Menempuh pendidikan Profesional IT selama 2
tahun di CEP-CCIT FTUI (Continuing Education Program - Center for Computing
Information Technology Faculty of Engineering - University of Indonesia), jurusan
Software Engineering – Java Programming pada tahun 2008-2010. Saat ini wiranti
bekerja di Lion Air Bandara Soekarno-Hatta sebagai Administrator dan melanjutkan
kuliah S1 di STMIK Raharja mengambil jurusan Teknik Informatika, konsentrasi
Software Engeenering.
Informasi lebih lanjut dapat melalui email penulis : [email protected]
Lisensi Dokumen:
Copyright © 2008-2014 ilmuti.org
Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial
(nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap
dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
Download