Pemrograman Berorientasi Obyek Lanjut (IT251)
Ramos Somya, S.Kom., M.Cs.
Internet IP Address Protocol Port Client - Server
Internet adalah interkoneksi dari berbagai jaringan komputer yang terkoneksi dalam banyak cara dengan beragam perangkat keras dan perangkat lunak. Dimungkinkan berkat adanya standarisasi komunikasi yang digunakan bersama. Menjamin kompabilitas dan reliabilitas komunikasi.
Secara logik sama dengan pengalamatan tradisional Alamat mengidentifikasi suatu objek secara unik Setiap mesin yang terkoneksi ke internet mempunyai ip address yang unik Ip address mengunakan sistem pengalamatan 32 bit cth: 192.168.1.1 (IP address) uajm.ac.id (DNS)
Latar belakang - Beragam tipe komunikasi digunakan pada internet - Tiap tipe komunikasi membutuhkan protokol spesifik Definisi sekumpulan aturan dan standar yang mendefinisikan suatu bentuk komunikasi pada jaringan komputer.
Beberapa protokol umum yang digunakan di atas jaringan internet: - Hypertext transfer Protocol (HTTP) - FTP - SMTP, POP3
Definisi suatu bilangan 16 bit yang digunakan untuk mengidentifikasi setiap layanan yang berjalan pada server di jaringan komputer.
Untuk menggunakan layanan kita harus membangun komunikasi ke server yang menyediakan layanan melalui port yang ditentukan.
Standart Port - nomor port secara spesifik diasosiasikan dengan jenis layanan tertentu
Contoh: FTP menggunakan port 21 HTTP menggunakan port 80
Basis dari arsitektur jaringan komputer melibatkan 2 elemen: Client: mesin yang membutuhkan informasi atau layanan tertentu. Server: mesin yang menyediakan informasi dan layanan yang dibutuhkan client. Client melakukan koneksi ke server dan melakukan permintaan untuk informasi dan layanan tertentu
Socket adalah suatu abtraksi yang mana aplikasi dapat mengirim dan menerima data seperti sama halnya dengan membuka suatu file untuk dibaca dan ditulis pada tempat penyimpanan file. Socket memungkinkan untuk masuk ke dalam jaringan dan berkomunikasi dengan aplikasi lain yang juga masuk ke dalam jaringan yang sama. Informasi yang ditulis ke dalam socket pada suatu aplikasi pada suatu mesin dapat dibaca oleh aplikasi lain pada mesin yang berbeda dan sebaliknya.
TCP (Transfer Control Protocol) bersifat Connection Oriented
UDP (User Datagram Protocol) bersifat Connectionless
Jika dianalogikan, koneksi Socket merupakan koneksi dua arah antar komputer dengan jalur pipa sebagai penghubungnya dan masing-masing pipa tersebut tertancap pada sebuah gerbang tertentu yang disebut dengan port.
TCP (Transmission Control Protocol) merupakan protocol transport yang andal (reliable), hal ini dikarenakan protokol TCP mempunyai mekanisme yang memastikan packet dapat diterima oleh client. Sebagai catatan, TCP tidak menjamin data akan diterima oleh si penerima apabila koneksi tidak dimungkinkan terbangun (misal: server sedang down, salah konfigurasi IP, kabel tidak dibuat dengan baik, dll), sebaliknya TCP dapat menjamin pengiriman data ke si penerima apabila koneksi memang memungkinkan terbangun dan memberikan pesan kesalahan (koneksi terputus atau tidak menerima acknowledgement) kepada user apabila koneksi tidak memungkinkan dibangun.
UDP ( User Datagram Protocol ) adalah transport layer yang tidak andal ( unreliable ), connectionless dan merupakan kebalikan dari transport layer TCP. Dengan menggunakan UDP, setiap aplikasi socket dapat mengirimkan paket – paket yang berupa datagram. Istilah datagram diperuntukkan terhadap paket dengan koneksi yang tidak andal ( unreliable service ). Koneksi yang andal selalu memberikan keterangan apabila pengiriman data gagal, sedangkan koneksi yang tidak andal tidak akan mengirimkan keterangan meski pengiriman data gagal.
Java menyediakan utilitas yang lengkap dalam pemrograman Socket yang dibundel dalam package java.net.* dan javax.net.*. Java menyediakan dua buah tipe Socket yang berbeda yaitu: TCP
Sockets (connection oriented socket) yang diimplementasikan pada kelas java.net.Socket UDP Sockets (connectionless socker) yang diimplentasikan pada kelas java.net.DatagramSocket
public class Server { public static void main(String[] args) { ServerSocket server; DataInputStream input; Socket serviceSocket = null; String message = ""; try { server = new ServerSocket(212); System.out.println("Server Ready..."); serviceSocket = server.accept(); System.out.println("A Client try to Connect...");
input = new DataInputStream(serviceSocket.getInputStream()); message = input.readLine(); System.out.println("Client Said : " + message); input.close(); serviceSocket.close(); server.close(); } catch (IOException e) { System.out.println(e.getMessage()); } } }
public class Client { public static void main(String args[]) { Socket clientSocket = null; PrintStream output; BufferedReader message; try { clientSocket = new Socket("localhost", 212); output = new PrintStream(clientSocket.getOutputStream()); message = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Message : "); output.println(message.readLine()); output.close(); clientSocket.close(); } catch (IOException e) { System.out.println(e.getMessage()); }
} }