A. TUJUAN PEMBELAJARAN

dokumen-dokumen yang mirip
PEMROGRAMAN SOCKET LANJUTAN

Praktikum Minggu ke-14. Socket Programming

Pemrograman Jaringan

A. TUJUAN : Dapat mengimplementasi-kan kelas-kelas Java yang digunakan dalam pemrogaman jaringan.

Network Programming 2010 Pertemuan-4. Pemrograman Socket. Husni. Husni.trunojoyo.ac.id Komputasi.wordpress.

NETWORK PROGRAMMING. Yuliana Setiowati Politeknik Elektronika Negeri Surabaya D4 PENS-ITS

MENGGUNAKAN TCP SOCKET. Oleh: M. Ghazali a.k.a. ghanoz 2480

Pemrograman Socket TCP dan Socket UDP

PEMROGRAMAN JARINGAN

Pemrograman Socket menggunakan TCP

Pemrograman Jaringan 6.

Connection Oriented. Kholid F.

Pemrograman Jaringan 9. Connectionless Oriented Programming

Protokol. Pemrograman Client/Server dengan Java Socket. Protokol TCP/IP. Tipe pemrograman jaringan. Java Socket

Pemrograman Berorientasi Obyek Lanjut (IT251) Ramos Somya, S.Kom., M.Cs.

Socket pada UDP. Husni Husni.trunojoyo.ac.id Komputasi.wordpress.com

10.1 Konsep dasar jaringan

Pemrograman Socket menggunakan UDP

TPI4202 e-tp.ub.ac.id. Lecture 4 Mas ud Effendi

BAB II LANDASAN TEORI

Network Programming 2010 Jaringan & Aplikasinya. Husni Husni.trunojoyo.ac.id

Modul Praktikum Pemrograman

Membuat Aplikasi Chatting Dengan Java

BAB 5 Mendapatkan Input dari Keyboard

Sistem Terdistribusi

Membuat Aplikasi Berbasis Web Di Device Android Mobile

Pemrograman Jaringan

BAB 5 Mendapatkan Input dari Keyboard

BAB 2 INPUT DARI KEYBOARD

Pemrograman Jaringan 5.

TCP (Transfer Control Protocol) SOCKET PROGRAMMING

LAPORAN RESMI ADMINISTRASI & MANAGEMENT JARINGAN. PRAKTIKUM 3 Pemrograman Socket dengan TCP

TASK V OBSERVING TCP/IP, PORT USING COMMAND PROMPT AND WIRESHARK

Nama Lengkap : Muiz Lidinillah NIM :

M.Octaviano Pratama

MODUL 2 WIRESHARK Protokol TCP

Sistem Terdistribusi

Modul 3 Flow Control dan Input

PEMROGRAMAN JAVA. Yoannita, S.Kom. Input Kondisi (IF-ELSE, SWITCH)

MODUL 2 WIRESHARK Protokol TCP

2.1. Sistem Komunikasi

INTRODUCTION TO ANDROID MOBILE APP DEVELOPMENT MUHAMMAD BAGIR., MTI

BAB II TINJAUAN PUSTAKA DAN DASAR TEORI. mengangkat kasus dan penggunaan teknologi yang berbeda-beda, pada table 2.1

Network Programming oleh : Yuliana Setiowati

TASK 5 JARINGAN KOMPUTER

Mendapatkan Input Dari Keyboard

JURUSAN SISTEM KOMPUTER FAKULTAS ILMU KOMPUTER UNIVERSITAS SRIWIJAYA

Network Programming. Oleh: Idris Winarno (thanks to my sist)

Agenda. Protokol TCP/IP dan OSI Keluarga Protokol TCP/IP

IMPLEMENTASI APLIKASI CHEPPYCHAT UNTUK JARINGAN KOMPUTER PADA LOCAL AREA NETWORK

PENGANTAR APLIKASI TERDISTRIBUSI (Minggu I Praktikum I)

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

Muhammad Zen Samsono Hadi, ST. Msc.

JARINGAN KOMPUTER. Disusun Oleh : Nama : Febrina Setianingsih NIM : Dosen Pembimbing : Dr. Deris Stiawan, M.T., Ph.D.

Sistem Terdistribusi 4

IMPLEMENTASI TCP/IP UNTUK MEMBUAT SERVER DATABASE ACCESS ABSTRAK

PRAKTIKUM 7 DASAR INPUT OUTPUT

JARINGAN KOMPUTER JURUSAN SISTEM KOMPUTER FAKULTAS ILMU KOMPUTER UNIVERSITAS SRIWIJAYA : MARINI SUPRIANTY NIM :

TUGAS TASK 5 JARINGAN KOMPUTER

Protokol Jaringan. Oleh : Tengku Mohd Diansyah,ST,M.Kom

Riwayat Pendidikan: SDK Lemuel II, Pos Pengumben, Jakarta Barat SMPK Lemuel, Pos Pengumben, Jakarta Barat SMUN 78, Kemanggisan, Jakarta Barat

MK. Pemrograman Berorientasi Objek. Input dari Keyboard. Karmilasari

JURUSAN SISTEM KOMPUTER FAKULTAS ILMU KOMPUTER UNIVERSITAS SRIWIJAYA

Minggu 6 Transport Layer

Input Nilai tanpa Case String di Java

PROGRAM STUDI D3 JURUSAN TEKNIK KOMPUTER POLITEKNIK NEGERI SRIWIJAYA PALEMBANG Pemrograman Berorientasi Objek 3 (Mobile And Web Programming)

Cara kerja aplikasi yang menggunakan TCP dapat digambarkan oleh di bawah ini :

Transport Layer El E ectro ect n ro ic En E gineerin ri g Pol o ytech tec nic In I stitu sti t of o Surabaya ITS Kampus ITS Sukolilo Surabaya 60111

HTTP Protocol Ketika sebuah alamat web (atau URL) yang diketik ke dalam web browser, web browser melakukan koneksi ke web service yang berjalan pada

BAB II TINJAUAN PUSTAKA DAN DASAR TEORI. pernah dilakukan oleh beberapa penulis. tentang membangun aplikasi chat berbasis android.

KOMUNIKASI PENGANTAR DATA TERDISTRIBUSI. Materi: 1. Komunikasi Data 2. Protocol 3. Remote Procedure Call 4. Object Remote

LAMPIRAN. Berikut ini adalah kode program transmisi video yang diinstall pada sisi user. public static void main(string args[]) throws Exception

PEMROGRAMAN SOCKET TUGAS SISTEM TERDISTRIBUSI

I/O (Input dan Output)

TUGAS JARINGAN KOMPUTER

Pemrograman Jaringan

EXCEPTION. 2. Pada kondisi bagaimana klausa finally tidak akan dieksekusi? Kode didalam block try memiliki statement return

Pemanggilan RESTful Web Service PHP dari Client Java

Lapisan Transport. Menjamin komunikasi yang handal antara dua buah komputer yang terhubung Terdiri atas :

Pemrograman Berorientasi Obyek (IT251) Ramos Somya, S.Kom., M.Cs.

A. TUJUAN PEMBELAJARAN 1. Mengetahui cara menangani exception dengan cara melempar exception. 2. Mengetahui cara membuat sendiri class exception.

Bahasa Pemrograman :: Dasar Pemrograman Java

Materi 7 Layer 4 Transport

Variabel tersebut seharusnya bisa dideklarasikan didalam try block dan block catch

Waktu Sisa : 0:43:4. Sukses. Kesalahan pada URL. File tidak lengkap. Kesalahan umum. Mengerjakan finally. Diluar block

J2ME GUI dan Interkoneksi Client Server

Cara Membaca File Text di JAVA

TUGAS V JARINGAN KOMPUTER

CAPTURE DAN ANALISIS PAKET PROTOKOL MENGGUNAKAN WIRESHARK

Arsitektur, Standarisasi, dan Trend

PENGGUNAAN PROXY SEBAGAI ACCOUNT MANAGER DALAM SUATU ISP

TCP DAN UDP. Budhi Irawan, S.Si, M.T

IP Address. Dedi Hermanto

APLIKASI CHAT ANTAR PC

Modul 1 Network Scanner & Probing

Transport Layer. Oleh : Akhmad Mukhammad

Pemrograman Jaringan 11 RMI

Modul 2. Network Analysis Tool, Application Layer Protocol, dan Transport Layer Protocol

CAPTURE DAN ANALISIS PAKET PROTOKOL MENGGUNAKAN WIRESHARK

Transkripsi:

Praktikum 9 PEMROGRAMAN SOCKET A. TUJUAN PEMBELAJARAN 1. Siswa memahami konsep aplikasi client server di jaringan. 2. Mahasiswa memahami konsep pemprograman socket dasar. 3. Mahasiswa mampu membangun program socket sederhana dg single thread B. DASAR TEORI Model yang umum diterapkan dalam jaringan komputer adalah model client/server. Konsepnya sederhana, sebuah aplikasi client melakukan permintaan untuk suatu layanan (service) informasi atau mengirim sebuah perintah ke suatu aplikasi server. Aplikasi server akan menerima permintaan dari client, kemudian memproses berdasarkan permintaan tersebut. Dari hasil pemrosesan yang sudah dilakukan, aplikasi server akan mengembalikan hasil pemrosesan tersebut ke aplikasi client. Sehingga pada prinsipnya aplikasi server dalam status menunggu (listen) permintaan dari aplikasi client, sedangkan client mencoba membuat koneksi (connect) ke server. Aplikasi client melakukan koneksi ke server melalui sebuah alamat socket. Alamat socket adalah kombinasi dari alamat IP dan nomor port. Contoh alamat socket adalah 192.168.1.30:80, dimana nomer 80 adalah nomer portnya. Jika alamat IP diibaratkan sebuah nomer telepon, maka nomer port adalah nomer ekstensinya. Suatu proses yang hendak berkomunikasi dengan proses lain lewat mekanisme socket haruslah mengikatkan dirinya dengan salah satu port. Tahap proses ini disebut dengan binding.

Memulai aplikasi Membuat server socket Membuat socket Permintaan membuka koneksi Menerima koneksi Membaca dan menulis stream Bertukar data Membaca dan menulis stream Menutup socket Permintaan menutup koneksi Menutup socket Keluar aplikasi tidak Lanjut? ya Gambar 1 Gambar 10.1 menunjukkan bagan interkoneksi anata aplikasi server dan aplikasi client. Model pemrograman client-server menggunakan dari dua macam koneksi pada layer 4/ layer transport OSI, yaitu connection oriented dan connectionless oriented. Untuk connection oriented menggunakan protokol TCP (Transmission Control Protocol). Sedangkan connectionless oriented menggunakan UDP (User Datagram Protocol ). Pada praktikum ini, kita akan mencoba membangun sebuah aplikasi cliet-server sederhana dengan menggunakan bahasa pemrograman Java. Pada J2SE telah disediakan paket java.net yang berisi kelaskelasdan interface yang menyediakan API (Application Programming Interface) level rendah (Socket, ServerSocket,DatagramSocket) dan level tinggi (URL, URLConnection). Berikut adalah contoh dari kelas Socket berikut method 2

dan eksepsi error yang tersedia (Untuk lebih jelasnya anda bias membacanya di Java documentation) : Socket(String host, int port, InetAddress localaddr, intlocalport); membuat sebuah socket dan mengkoneksikannya ke port yang dituju pada alamat IP yang disebutkan pada parameter address atau nama host. Selain itu juga akan dilakukan bind socket ke alamat lokal dan port lokal. (Hal ini dilakukan jika koneksi antara client dan server membutuhkan nomor port yang sudah ditentukan. Methods : getinetaddress() : untuk mendapatkan nama host yang dituju dan alamat IPnya getport() : untuk mendapatkan nomor remote host getlocalport(): untuk mendapatkan nomor port localhost getlocaladdress(): untuk mendapatkan alamat local dimana socket digunakan getinputstream(): mengembalikan objek input stream dari socket getoutputstream(): mengembalikan objek output stream ke socket setsotimeout(int timeout) dan getsotimeout() : Kedua method tersebut digunakan untuk memberi (set) dan mengambil (get) nilai opsi Socket untuk time out block (dalam milidetik) reading dari socket (SO_TIMEOUT). Jika dalam waktu timeout tidak mendapat suatu nilai maka, akan dilemparkan ke exception java.net.sockettimeoutexception. Nilai default timeoutnya adalah 0, yang berarti tanpa batas. Exceptions : SocketException : Kelas ini merupakan kelas yang diturunkan dari kelas IOException. Kelas exception ini dipanggil atau dipicu ketika ada kegagalan dalam pemakaian socket, sebagai contoh adalah kegagalan dalam protokol TCP. Salah satu penyebabnya yang mungkin terjadi adalah ketika port yang akan digunakan sudah digunakan sebelumnya pada localhost. Penyebab yang lain adalah user tidak dapat melakukan bind ke port yang dituju. Misalnya saja, Anda ingin menggunakan port 3

80 untuk aplikasi Anda, namun ternyata pada komputer Anda tersebut sudah berjalan HTTP Server yang juga menggunakan port 80. Bila hal ini terjadi, maka JVM akan melemparkan kegagalan yang ada ke kelas exception SocketException. BindException : Exception ini akan dipanggil ketika ada port lokal yang akan digunakan sudah terpakai oleh yang lain, atau ada kegagalan dalam permintaan untuk menggunakan alamat. ConnectException : Exception ini akan dipanggil ketika sebuah koneksi ditolak oleh host yang dituju, oleh karena tidak ada proses yang siap menerima data pada port yang dituju. NoRouteToHostException: Koneksi yang akan dibangun tidak dapat dipenuhi oleh karena melebihi waktu timeout yang tersedia atau host yang dituju tidak dapat dicapai (unreachable). C. Contoh Program C.1. Program Aplikasi HTTP Server sederhana 1. /** 2. * @author ferry 3. */ 4. ///A Simple Web Server (WebServer.java) 5. 6. import java.io.bufferedreader; 7. import java.io.inputstreamreader; 8. import java.io.printwriter; 9. import java.net.serversocket; 10. import java.net.socket; 11. 12. public class webserver { 13. /** 14. * WebServer constructor. 15. */ 16. protected void start() { 17. ServerSocket s; 18. int port = 8888; 19. System.out.println("Webserver starting up on port " +port); 20. System.out.println("(press ctrl-c to exit)"); 21. try { 22. // tahap bind(),membuat socket 4

23. s = new ServerSocket(port); 24. } catch (Exception e) { 25. System.out.println("Error: " + e); 26. return; 27. } 28. 29. System.out.println("Waiting for connection"); 30. for (;;) { 31. try { 32. // tahap listen(), menunggu koneksi 33. Socket remote = s.accept(); 34. // tahap accept() 35. System.out.println("Connection, sending data."); 36. BufferedReader in = new BufferedReader(new InputStreamReader( 37. remote.getinputstream())); 38. PrintWriter out = new PrintWriter(remote.getOutputStream()); 39. // membaca request 40. String str = "."; 41. while (!str.equals("")) 42. str = in.readline(); 43. // Mengirim response dan mengirim HTTP headers 44. out.println("http/1.0 200 OK"); 45. out.println("content-type: text/html"); 46. out.println("server: Bot"); 47. // Batas pengiriman header ditandai dengan baris kosong 48. out.println(""); 49. // Mengirim halam HTML 50. out.println("<h1>selamat datang di web server percobaan</h1>"); 51. out.println("<blink>selamat datang di web server percobaan</blink>"); 52. out.flush(); 53. remote.close(); 54. } catch (Exception e) { 55. System.out.println("Error: " + e); 56. } 57. } 58. } 59. 60. /** 61. * Menjalankan server 62. * 63. * @param args 64. * Command line parameters are not used. 65. */ 66. public static void main(string args[]) { 67. webserver ws = new webserver(); 68. ws.start(); 5

69. } 70. } END C.2. Program Aplikasi Chat Server dengan menggunakan TCP 1. import java.io.bufferedreader; 2. import java.io.ioexception; 3. import java.io.inputstreamreader; 4. import java.io.printwriter; 5. import java.net.serversocket; 6. import java.net.socket; 7. 8. /** 9. * 10. * @author ferry 11. */ 12. public class TCPEchoServer { 13. 14. private static ServerSocket servsock; 15. private static final int PORT = 1234; 16. 17. public static void main(string args[]) { 18. System.out.println("Membuka socket...\n"); 19. try { 20. servsock = new ServerSocket(PORT); 21. } catch (IOException e) { 22. System.out.println("Gagal membuka port!!!"); 23. System.exit(1); 24. } 25. do { 26. run(); 27. } while (true); 28. } 29. 30. private static void run() { 31. Socket link = null; 32. try { 33. 34. link = servsock.accept(); 35. BufferedReader in = new BufferedReader(new InputStreamReader(link.getInputStream())); 6

36. PrintWriter out = new PrintWriter(link.getOutputStream(), true); 37. int nummessages = 0; 38. String message = in.readline(); 39. while (!message.equals("close")) { 40. 41. System.out.println("Pesan diterima : [" +message.tostring() + "] dalam " + message.length() + " bytes"); 42. //System.out.println("Message received"); 43. nummessages++; 44. out.println("isi Pesan " + nummessages + ":" + message); 45. message = in.readline(); 46. 47. } 48. out.println(nummessages + " buah pesan telah diterima."); 49. } catch (IOException e) { 50. } finally { 51. try { 52. System.out.println("*********Menutup koneksi ****"); 53. link.close(); 54. } catch (IOException e) { 55. System.out.println("Tidak dapat memustukan koneksi"); 56. System.exit(1); 57. } 58. } 59. } 60. } C.3. Program Aplikasi Chat Client dengan menggunakan TCP 1. import java.io.bufferedreader; 2. import java.io.ioexception; 3. import java.io.inputstreamreader; 4. import java.io.printwriter; 5. import java.net.inetaddress; 6. import java.net.socket; 7. import java.net.unknownhostexception; 8. 9. /** 10. * 11. * @author ferry 12. */ 13. public class TCPEchoClient { 14. 15. private static String strhost; 16. private static InetAddress host; 17. private static final int PORT = 1234; 7

18. 19. public static void main(string args[]) { 20. try { 21. // host = InetAddress.getLocalHost(); 22. strhost = "10.252.44.177" ; // <- Masukan sesuai dengan tujuan 23. host = InetAddress.getByName(strHost); 24. } catch (UnknownHostException e) { 25. System.out.println("Alamat tidak ditemukan"); 26. System.exit(1); 27. } 28. run(); 29. } 30. 31. private static void run() { 32. Socket link = null; 33. try { 34. link = new Socket(host, PORT); 35. BufferedReader in = new BufferedReader(new InputStreamReader(link.getInputStream())); 36. PrintWriter out = new PrintWriter(link.getOutputStream(), true); 37. 38. BufferedReader userentry = new BufferedReader(new InputStreamReader(System.in)); 39. String message, response; 40. do { 41. System.out.print("Masukkan pesan : "); 42. message = userentry.readline(); 43. out.println(message); 44. response = in.readline(); 45. System.out.println("SERVER " + response); 46. } while (!message.equals("close")); 47. } catch (IOException e) { 48. e.printstacktrace(); 49. } finally { 50. try { 51. System.out.println("Menutup Koneksi."); 52. link.close(); 53. } catch (IOException e) { 54. System.out.println("Tidak dapat memutuskan koneksi!"); 55. System.exit(1); 56. } 57. } 58. } 59. } 8

D. Tahap praktikum 1. Tulis kembali program C1 dalam editor yang anda sukai. 2. Jalankan program netstat -ap TCP. Catat alamat IP sumber, alamat IP tujuan dan nomor port yang sedang dalam keadaan menunggu ( listen() ). 3. Jalankan program C1! Amati perubahan yang sedang terjadi pada komputer anda dengan menggunakan perintah pada nomor 2. 4. Jalankan web browser dan arahkan URL ke alamat IP computer anda ditambah dengan nomor port dari web server percobaan! 5. Amati perubahan yang sedang terjadi pada komputer anda dengan menggunakan perintah pada nomor 2. 6. Buat flowchart untuk menggambarkan interaksi program C1 dan browser anda! 7. Tulis kembali program C2,C3 dalam editor yang anda sukai. 8. Jalankan program Aplikasi Server C2! Amati perubahan yang sedang terjadi pada komputer anda dengan menggunakan perintah pada nomor 2. 9. Jalankan program C3! Amati perubahan yang sedang terjadi pada komputer anda dengan menggunakan perintah pada nomor 2. 10. Kirim 3 pesan yang berbeda. Pesan terakhir adalah close. Catat hasil pada aplikasi server dan aplikasi client. 11. Jalankan perintah pada no 11! Amati perubahan port dari aplikasi client yang sedang terjadi pada komputer anda dengan menggunakan perintah pada nomor 2. Mengapa terjadi perubahan pada port aplikasi client? 12. Buat flowchart untuk menggambarkan interaksi program C2 dan program C3! E. Tugas 1. Port dibagi menjadi tiga kategori menurut nomornya: wel-known port, user port dan dynamic/private port. Jelaskan latar belakang pengkategorian tersebut! 2. Sebutkan dan jelaskan secara singkat beberapa contoh aplikasi client-server yang sering anda gunakan! 3. Jelaskan perbedaan proses komunikasi dengan menggunakan TCP dan UDP! 4. Buatlah flowchart program aplikasi chat Server dan aplikasi chat Client dengan menggunakan protocol UDP! 9

5. Implementasikan flowchart pada soal no 4 yang sudah anda buat ke dalam program! DAFTAR PUSTAKA 1. http://www.oracle.com/technetwork/java/javase/documentation/index.html 2. URL http://www.ustudy.in/node/7214 10