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