BUKU PETUNJUK PRAKTIKUM PEMROGRAMAN JARINGAN

dokumen-dokumen yang mirip
PEMROGRAMAN JARINGAN

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

Pemrograman Jaringan

Pemrograman Jaringan

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

JARINGAN KOMPUTER Layanan Dari TCP dan UDP Protocol

Pemrograman Jaringan 9. Connectionless Oriented Programming

Pemrograman Socket TCP dan Socket UDP

Pemrograman Socket menggunakan TCP

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

10.1 Konsep dasar jaringan

TRANSPORT LAYER DEFINISI

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

Connection Oriented. Kholid F.

A. TUJUAN PEMBELAJARAN

BAB II DASAR TEORI. Teknologi TCP/IP adalah hasil penelitian dan pengembangan protocol

TRANSPORT LAYER. Aplikasi dan Operasi pada TCP dan UDP

PRAKTIKUM 7 DASAR INPUT OUTPUT

: M Rasyid Darmawan NIM : TCP. Pengertian TCP. Karakteristik TCP

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

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

Pemrograman Jaringan 6.

Tutorial 1. Pemrograman Socket

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

Fungsi Lapis Transport

Pemrograman Socket menggunakan UDP

BAB 4 PROTOKOL JARINGAN KOMPUTER

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

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

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

Fungsi Lapis Transport

Minggu 6 Transport Layer

Sejarah TCP/IP TCP/IP

26/09/2013. Pertemuan III. Elisabeth, S.Kom - FTI UAJM. Referensi Model TCP/IP

Membuat Aplikasi Chatting Dengan Java

STREAM DAN FILE. PipedInputStream, SequenceInputStream, dan StringBufferInputStream.

Pertemuan III. Referensi Model TCP/IP

Pertemuan III. Referensi Model TCP/IP

Refrensi OSI

A. TUJUAN PEMBELAJARAN

PEMROGRAMAN JARINGAN MODUL 3 STREAM

BAB 2: INTRODUCTION TCP/IP

APPLICATION LAYER. Oleh : Reza Chandra

Deskripsi Layanan Protokol TCP dan UDP. (Tugas Mata Kuliah Jaringan Komputer) Nama: Azwar Hidayat NIM: Kelas: SK 4 C

adalah sebuah aturan atau standar yang mengatur hubungan, komunikasi, dan perpindahan data antara dua atau lebih titik komputer dalam Komunikasi Data

Transport Layer. Oleh : Akhmad Mukhammad

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

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

Komunikasi Data STMIK AMIKOM Yogyakarta Khusnawi, S.Kom, M.Eng. TCP/IP Architecture

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

JURUSAN SISTEM KOMPUTER FAKULTAS ILMU KOMPUTER UNIVERSITAS SRIWIJAYA

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

Introduction To Stream

PEMROGRAMAN SOCKET LANJUTAN

Bab 5: Lapisan Transport

Modul 10 TCP/IP Lanjutan

BAB II LANDASAN TEORI

1. Pendahuluan. 2. Tinjauan Pustaka

MODEL REFERENSI OSI & TCP/IP. Budhi Irawan, S.Si, M.T

Pemrograman Jaringan 5.

PENGENALAN JAVA (2)

Sistem Terdistribusi 4

Topik. Stream I/O Cara menggunakan Stream Hierarchy Java I/O Membaca File Menulis File Menghapus File Cara membaca isi Direktori dalam file

2.1. Sistem Komunikasi

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

Protokol adalah sebuah aturan atau standar yang mengatur atau mengijinkan terjadinya hubungan, komunikasi, dan perpindahan data antara dua atau lebih

Tugas Jaringan Komputer

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

IP Address. Dedi Hermanto

Komunikasi Antar Proses

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

DHCP client merupakan mesin klien yang menjalankan perangkat lunak klien DHCP yang memungkinkan mereka untuk dapat berkomunikasi dengan DHCP Server.

We Can Start From Nothing

A. TUJUAN PEMBELAJARAN

TUGAS JARKOM. *OSI Layer dan TCP/IP* A. OSI layer

Teknologi Streaming Streaming

MODEL OSI DAN DOD. Referensi Model OSI (Open System Interconnections).

JURUSAN SISTEM KOMPUTER FAKULTAS ILMU KOMPUTER UNIVERSITAS SRIWIJAYA

Dosen Pengampu : Muhammad Riza Hilmi, ST.

BAB 2 TINJAUAN PUSTAKA

PENGANTAR APLIKASI TERDISTRIBUSI (Minggu I Praktikum I)

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

BAB 2 DASAR TEORI. Iklan berasal dari sebuah kata dalam bahasa melayu, yaitu i lan atau i lanun

ARSITEKTUR PROTOKOL TCP/IP

TUGAS KELAS 1 Praktek Jaringan Komputer 2 Tentang Ringkasan Model DOD D I S U S U N OLEH :

Hubungan Aplikasi dan Transport

Gambar 11. Perbandingan Arsitektur OSI dan TCP/IP

CAPTURE DAN ANALISIS PAKET PROTOKOL MENGGUNAKAN WIRESHARK

I/O (Input dan Output)

1. Menggunakan model OSI dan TCP/IP dan protokol-protokol yang terkait untuk menjelaskan komunikasi data dalam network. 2. Mengidentifikasi dan

PEMROGRAMAN JAVA : STREAM DAN FILE

BAB 5 Mendapatkan Input dari Keyboard

Tugas Jaringan Komputer

MAKALAH TENTANG LAPISAN OSI KE 7 (APPLICATION LAYER)

Komunikasi end-to-end logik Segmenting enkapsulasi port address Reassembling data Identifikasi aplikasi (port-addressing)

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

TUGAS JARINGAN KOMPUTER

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

Dasar Dasar Jaringan

Application Layer Protocol and Services DNS Service and Protocol WWW dan HTTP

Transkripsi:

BUKU PETUNJUK PRAKTIKUM PEMROGRAMAN JARINGAN Oleh: Felix Andreas Sutanto, M.Cs LABORATORIUM KOMPUTER PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INFORMASI UNIVERSITAS STIKUBANK SEMARANG

DAFTAR ISI Universitas Stikubank Fakultas Teknologi Informasi 2

PRAKTIKUM 1 Pemrograman Jaringan Tujuan Instruksional Setelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk: 1. Memahami protocol jaringan seperti TCP, UDP dan SCTP 2. Mengenal kemampuan Java untuk pemrograman jaringan 1. Protocol Jaringan Internet Protokol (IP) adalah protokol lapisan jaringan (network layer dalam OSI Reference Model) atau protokol lapisan internetwork (internetwork layer dalam DARPA Reference Model) yang digunakan oleh protokol TCP/IP untuk melakukan pengalamatan dan routing paket data antar host-host di jaringan komputer berbasis TCP/IP. Transmission Control Protocol (TCP) adalah suatu protokol yang berada di lapisan transpor (baik itu dalam tujuh lapis model referensi OSI atau model DARPA) yang berorientasi sambungan (connection-oriented) dan dapat diandalkan (reliable). UDP, singkatan dari User Datagram Protocol, adalah salah satu protokol lapisan transpor TCP/IP yang mendukung komunikasi yang tidak andal (unreliable), tanpa koneksi (connectionless) antara host-host dalam jaringan yang menggunakan TCP/IP. 2. Pemrograman Jaringan dengan Java Pemrograman socket adalah cara untuk menggunakan komponen API (Application Programming Interface) socket untuk membuat sebuah aplikasi. Java telah menyediakan paket java.net yang berisi kelas-kelas dan interface yang menyediakan API (Application Programming Interface) level rendah (Socket, ServerSocket, DatagramSocket) dan level tinggi (URL, URLConnection). Socket merupakan fasilitas IPC (Inter Proses Communication) untuk aplikasi jaringan. Cara kerja socket dapat digambarkan seperti pada gambar 1.1 dan gambar 1.2. Universitas Stikubank Fakultas Teknologi Informasi 3

Gambar 1.1 Client menghubungi server Gambar 1.2. Server menghubungi client Sebuah socket dilengkapi dengan alamat, yang terdiri atas IP address tujuan dan nomor port. Alamat IP dapat menggunakan alamat jaringan lokal (LAN) maupun alamat internet. Jadi socket dapat digunakan untuk IPC pada LAN maupun Internet. Nomor port merupakan bilangan bulat yang digunakan untuk membedakan layanan-layanan yang berjalan pada komputer server yang sama. Pengguna layanan menggunakan nomor port ini untuk menghubungi komputer server dengan workstation (client). Dengan menggunakan nomor port yang standar, komunikasi dapat terjadi antar beberapa komputer dari jarak jauh untuk mengerjakan berbagai layanan jaringan, karena baik pengirim maupun penerima saling mengetahui ke mana data harus dikirim menggunakan nomor port tersebut. Sebagai contoh, semua sistem menggunakan nomor port 23 untuk aplikasi TELNET atau port 80 untuk aplikasi website. Oleh karena pada perancangan sistem akan dibuat suatu jenis layanan baru dengan memanfaatkan socket, maka dapat dibuat nomor port tersendiri untuk aplikasi tersebut. 3. Paket Java Network Beberapa kelas java.net yang dapat digunakan dalam menerapkan pemrograman jaringan adalah: Socket(InetAddress address, int port) : untuk membuat sebuah stream socket dan koneksi ke suatu nomor port pada sebuah komputer yang memiliki alamat IP. Socket(String host, int port) : untuk membuat sebuah stream socket dan juga koneksi ke suatu port tertentu pada sebuah komputer berdasar namanya. Socket(InetAddress address, int port, InetAddress localaddr,int localport) / Socket(String host, int port, InetAddress localaddr, int localport) : untuk 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). 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 Universitas Stikubank Fakultas Teknologi Informasi 4

getinputstream() : mengembalikan objek input stream dari socket getoutputstream() : mengembalikan objek output stream ke socket ServerSocket( int port [, int backlog [, InetAddress bindaddress ]] ) : untuk membuat sebuah server dengan port tertentu, batasan jumlah antrian (backlog), dan alamat IP bindaddress. DatagramSocket(int port) : untuk menyatakan penggunaan suatu nomor port sebagai "pintu" untuk menerima koneksi dari client. DatagramSocket(int port, InetAddress laddr) : untuk membentuk koneksi dengan protokol UDP pada alamat IP lokal tertentu dan pada nomor port tertentu. DatagramSocket() : untuk membentuk koneksi dengan protokol UDP pada alamat IP lokal host dengan penentuan nomor portnya secara random berdasar tersedianya nomor port yang dapat digunakan. DatagramPacket(byte[] buf, int length) : untuk mengambil informasi. DatagramPacket(byte[] buf, int length, InetAddress address, int port) : untuk membuat paket Datagram yang akan mengirim data. Constructor ini memerlukan informasi array byte yang akan dikirim dan panjangnya, serta alamat dan port yang dituju. 4. Tugas Tuliskan struktur program java yang memanfaatkan kemampuan java dalam menangani jaringan. Universitas Stikubank Fakultas Teknologi Informasi 5

Hari / Tgl : Judul Tugas TTD Dosen : Program Studi Nilai : Universitas Stikubank Fakultas Teknologi Informasi 6

PRAKTIKUM 2 Stream Tujuan Instruksional Setelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk: 1. Memahami penggunaan stream. 2. Membuat program pemanfaatan stream. 1. Stream Stream digunakan untuk menangani proses I/O di Java. Input stream digunakan untuk membaca data dan output stream untuk menulis data. Kelas stream yang berbeda, seperti java.io.fileinputstream dan sun.net.telnetoutputstream, digunakan untuk membaca dan menulis sumber data tertentu. Namun, semua output stream memiliki metode dasar yang sama untuk menulis data dan input stream menggunakan metode dasar yang sama untuk membaca data. Subclass dari OutputStream menggunakan metode untuk menulis data pada media tertentu. Misalnya, FileOutputStream menggunakan metode ini untuk menulis data ke dalam file. Metode dasar OutputStream adalah write (int b). Metode ini mengambil sebuah integer dari 0 sampai 255 sebagai sebuah argumen dan menulis byte sesuai dengan output stream. Subclass dari InputStream menggunakan metode ini untuk membaca data dari media tertentu. Misalnya, FileInputStream membaca data dari file. Sebuah TelnetInputStream membaca data dari koneksi jaringan. Sebuah ByteArrayInputStream membaca data dari sebuah array byte. Metode dasar InputStream adalah membaca noargs () method. Metode ini membaca satu byte data dari sumber input stream dan mengembalikannya sebagai int dari 0 sampai 255. 2. Reader dan Writer Subkelas yang paling penting dari Reader dan Writer adalah InputStreamReader dan kelas OutputStreamWriter. Sebuah InputStreamReader berisi input stream dasar dari yang membaca byte mentah. Ini menerjemahkan byte ini menjadi karakter Unicode sesuai dengan pengkodean tertentu. Sebuah OutputStreamWriter menerima karakter Unicode dari program yang berjalan. Kemudian menerjemahkan karakter tersebut ke dalam byte menggunakan pengkodean tertentu dan menulis byte ke output stream yang mendasarinya. Universitas Stikubank Fakultas Teknologi Informasi 7

Selain dua kelas tersebut, paket java.io menyediakan beberapa pembaca baku dan kelas penulis yang membaca karakter tanpa langsung membutuhkan arus input yang mendasarinya, antara lain adalah : FileReader FileWriter StringReader StringWriter CharArrayReader CharArrayWriter 3. Contoh Program Listing 2.1 import java.io.*; class input1 public static void main(string[] args) throws IOException String str; BufferedReader br; br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Masukkan Nama Anda : "); str= br.readline(); System.out.println("Hello "+ str); Listing 2.2 import java.io.*; class input2 public static void main(string[] args) throws IOException int angka1, angka2; BufferedReader br; br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Masukkan Angka1 : "); Universitas Stikubank Fakultas Teknologi Informasi 8

angka1 = Integer.parseInt(br.readLine()); System.out.print("Masukkan Angka2 : "); angka2 = Integer.parseInt(br.readLine()); System.out.println("Angka1 Anda : "+ angka1); System.out.println("Angka2 Anda : "+ angka2); 4. Tugas Buatlah program untuk input nim, nama, nilai uts dan uas. Universitas Stikubank Fakultas Teknologi Informasi 9

Hari / Tgl : Judul Tugas TTD Dosen : Program Studi Nilai : Universitas Stikubank Fakultas Teknologi Informasi 10

PRAKTIKUM 3 Internet Address Tujuan Instruksional Setelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk: 1. Memahami internet address clas 2. Membuat program penerapan internet address clas 1. Internet Address Kelas java.net.inetaddress adalah level tingkat tinggi dari java untuk representasi sebuah alamat IP, baik IPv4 dan IPv6. Hal ini digunakan oleh sebagian besar kelas-kelas jaringan lainnya, termasuk Socket, ServerSocket, URL, DatagramSocket, DatagramPacket, dan banyak lagi. Umumnya, itu mencakup nama host dan alamat IP. InetAddress memiliki tiga metode statis yang mengembalikan sesuai inisialisasi objek. Metode tersebut adalah: public static InetAddress getbyname(string hostname) throws UnknownHostException public static InetAddress[] getallbyname(string hostname) throws UnknownHostException public static InetAddress getlocalhost( ) throws UnknownHostException Ketiga metode ini dapat membuat koneksi ke server DNS lokal untuk mengisi informasi dalam objek InetAddress. Metode lainnya di kelas ini, seperti getaddress () dan gethostname (), sebagian besar bekerja dengan informasi yang diberikan oleh salah satu dari tiga metode. 2. Contoh Program import java.net.*; class myaddress public static void main (String args[]) try InetAddress address = InetAddress.getLocalHost(); System.out.println(address); Universitas Stikubank Fakultas Teknologi Informasi 11

catch (UnknownHostException e) System.out.println("Could not find this computer's address."); 3. Tugas Buatlah program seperti nslookup yang dapat memberikan informasi ip address dan nama host. Universitas Stikubank Fakultas Teknologi Informasi 12

Hari / Tgl : Judul Tugas TTD Dosen : Program Studi Nilai : Universitas Stikubank Fakultas Teknologi Informasi 13

PRAKTIKUM 4 URL Tujuan Instruksional Setelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk: 1. Memahami tentang URL 2. Membuat program untuk menerapkan URL Class 1. URL Class Kelas URL adalah cara paling sederhana untuk sebuah program Java untuk menemukan dan mengambil data dari jaringan. Anda tidak perlu khawatir tentang rincian protokol yang digunakan, format data yang diambil, atau bagaimana berkomunikasi dengan server, anda cukup memberitahu URL dan mendapatkan data untuk Anda. Kelas java.net.url adalah sebuah abstraksi dari Uniform Resource Locator (URL) seperti http://www.hamsterdance.com/ atau ftp://ftp.redhat.com/pub/. Listing program berikut adalah contoh penggunaan kelas URL yang meliputi pengecekan URL dan berbagai cara penulisannya menggunakan kelas URL. URL terdiri dari lima bagian, yaitu Skema atau dikenal sebagai protokol, kewenangan, path, fragmen pengenal, juga dikenal sebagai bagian atau ref serta string query. Contohnya adalah sebagai berikut: http://java.sun.com:80/docs/books/tutorial/index.html#downloading Contoh penerapannya adalah sebagai berikut: import java.net.*; public class urltest1 public static void main (String args[]) URL weburl, ftpurl; try weburl = new URL("http://www.macfaq.com/vendor.html"); System.out.println(webURL); ftpurl = new URL("ftp://ftp1.macfaq.com/pub/"); System.out.println(ftpURL); catch (MalformedURLException e) System.err.println("URL Salah"); Universitas Stikubank Fakultas Teknologi Informasi 14

2. URL Connection URLConnection adalah kelas abstrak yang merupakan sambungan aktif ke sumber daya yang ditentukan oleh URL. Kelas URLConnection memiliki dua tujuan yang berbeda tetapi terkait. Pertama, memberikan kontrol lebih besar atas interaksi dengan server (terutama server HTTP) daripada kelas URL. Dengan URLConnection, Anda dapat memeriksa header yang dikirimkan oleh server dan respon yang sesuai. Anda dapat mengatur field header yang digunakan dalam permintaan klien. Anda dapat menggunakan URLConnection untuk men-download file biner. Akhirnya, URLConnection sebuah memungkinkan Anda mengirim data kembali ke server web dengan POST atau GET dan menggunakan metode permintaan HTTP yang lain. Untuk membuat sebuah program yang menggunakan kelas URLConnection diperlukan urutan langkah-langkah dasar sebagai berikut: 1. Buatlah objek URL. 2. Panggil metode openconnection() untuk mengambil objek URLConnection dari suatu URL. 3. Mengkonfigurasi URLConnection tersebut. 4. Baca field header. 5. Dapatkan input stream dan membaca data. 6. Dapatkan output stream dan menulis data. 7. Menutup koneksi. Contoh program akan membaca data dari URL www.unisbank.ac.id. Hasil dari program adalah kode-kode HTML penyusun web. import java.net.*; import java.io.*; public class URLConnectionReader public static void main(string[] args) throws Exception URL alamat = new URL("http://www.unisbank.ac.id"); URLConnection yc = alamat.openconnection(); BufferedReader in = new BufferedReader( new InputStreamReader( yc.getinputstream())); String inputline; while ((inputline = in.readline())!= null) System.out.println(inputLine); Universitas Stikubank Fakultas Teknologi Informasi 15

in.close(); 3. Tugas Buat program untuk mendapatkan informasi dari alamat URL bebas. Universitas Stikubank Fakultas Teknologi Informasi 16

Hari / Tgl : Judul Tugas TTD Dosen : Program Studi Nilai : Universitas Stikubank Fakultas Teknologi Informasi 17

PRAKTIKUM 5 SOCKET Tujuan Instruksional Setelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk: 1. Memahami penggunaan port. 2. Memahami penggunaan socket untuk server dan client. 1. Port Nomor-nomor di bawah angka 1024 merupakan port yang umum digunakan dan ditetapkan oleh IANA (Internet Assigned Number Authority). Tabel 5.1 berikut ini menyebutkan beberapa port TCP yang telah umum digunakan. Tabel 5.1. Contoh Well Known Port Nomor port TCP Keterangan 20 File Transfer Protocol/FTP (digunakan untuk saluran data) 21 File Transfer Protocol/FTP (digunakan untuk saluran kontrol) 23 Telnet 25 SMTP yang digunakan untuk mengirim e-mail 53 Domain Name System (DNS) Name Query 67 BOOTP client (Dynamic Host Configuration Protocol [DHCP]) 68 BOOTP server (DHCP) 80 Hypertext Transfer Protocol yang digunakan untuk World Wide Web. 110 Post Office Protocol 3/POP3 untuk menerima e-mail. 137 NetBIOS Name Service 138 NetBIOS Datagram Service 139 NetBIOS over TCP session service 161 Simple Network Management Protocol (SNMP) 445 Server Message Block (SMB) 2. Socket Untuk Client Kelas java.net.socket adalah kelas fundamental Java untuk melakukan operasi TCP client-side. import java.net.*; import java.io.*; public class myport Universitas Stikubank Fakultas Teknologi Informasi 18

public static void main(string[] args) Socket thesocket; String host = "localhost"; for (int i = 0; i <=100; i++) try thesocket = new Socket(host, i); System.out.println("There is a server on port " + i + " of " + host); catch (UnknownHostException e) System.err.println(e); break; catch (IOException e) 3. Socket untuk Server Kelas ServerSocket berisi semua yang diperlukan untuk menulis server di Java. Ini memiliki konstruktor yang membuat objek baru ServerSocket, metode yang mendengarkan koneksi pada port tertentu, metode yang mengkonfigurasi opsi server berbagai soket, dan bermacam-macam metode biasa seperti tostring (). Dalam pemrograman java siklus hidup dasar dari suatu program server adalah: 1. Sebuah ServerSocket yang baru dibuat pada sebuah port tertentu menggunakan konstruktor ServerSocket (). 2. The ServerSocket mendengarkan upaya koneksi masuk pada port menggunakan metode accept(). 3. Tergantung pada jenis server, baik getinputstream Socket's (), getoutputstream (), atau keduanya dipanggil untuk mendapatkan input dan output stream yang berkomunikasi dengan klien. 4. Server dan klien berinteraksi sesuai dengan yang telah disepakati protokol sampai saatnya untuk menutup koneksi. Universitas Stikubank Fakultas Teknologi Informasi 19

5. Server, klien, atau keduanya menutup koneksi. 6. Server kembali ke langkah 2 dan menunggu sambungan berikutnya. import java.net.*; import java.io.*; public class serverport public static void main(string[] args) ServerSocket theserver; for (int i = 1024; i <= 65535; i++) try theserver = new ServerSocket(i); theserver.close(); catch (IOException e) System.out.println("There is a server on port " + i + "."); 4. Tugas Buat program untuk mendeteksi port yang aktif pada server mulai dari port 500 sampai 1000. Universitas Stikubank Fakultas Teknologi Informasi 20

Hari / Tgl : Judul Tugas TTD Dosen : Program Studi Nilai : Universitas Stikubank Fakultas Teknologi Informasi 21

PRAKTIKUM 6 TCP Socket Tujuan Instruksional Setelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk: 1. Memahami socket TCP 2. Membuat implementasi program. 1. Socket TCP Transmission Control Protocol (TCP) adalah suatu protokol yang berada di lapisan transpor yang berorientasi sambungan (connection-oriented) dan dapat diandalkan (reliable). TCP memiliki karakteristik sebagai berikut: 1. Berorientasi sambungan (connection-oriented): Sebelum data dapat ditransmisikan antara dua host, dua proses yang berjalan pada lapisan aplikasi harus melakukan negosiasi untuk membuat sesi koneksi terlebih dahulu. Koneksi TCP ditutup dengan menggunakan proses terminasi koneksi TCP (TCP connection termination). 2. Full-duplex: Untuk setiap host TCP, koneksi yang terjadi antara dua host terdiri atas dua buah jalur, yakni jalur keluar dan jalur masuk. Dengan menggunakan teknologi lapisan yang lebih rendah yang mendukung full-duplex, maka data pun dapat secara simultan diterima dan dikirim. Header TCP berisi nomor urut (TCP sequence number) dari data yang ditransmisikan dan sebuah acknowledgment dari data yang masuk. 3. Dapat diandalkan (reliable): Data yang dikirimkan ke sebuah koneksi TCP akan diurutkan dengan sebuah nomor urut paket dan akan mengharapkan paket positive acknowledgment dari penerima. Jika tidak ada paket Acknowledgment dari penerima, maka segmen TCP (protocol data unit dalam protokol TCP) akan ditransmisikan ulang. Pada pihak penerima, segmen-segmen duplikat akan diabaikan dan segmen-segmen yang datang tidak sesuai dengan urutannya akan diletakkan di belakang untuk mengurutkan segmen-segmen TCP. Untuk menjamin integritas setiap segmen TCP, TCP mengimplementasikan penghitungan TCP Checksum. 4. Byte stream: TCP melihat data yang dikirimkan dan diterima melalui dua jalur masuk dan jalur keluar TCP sebagai sebuah byte stream yang berdekatan (kontigu). Nomor urut TCP dan nomor acknowlegment dalam setiap header TCP didefinisikan juga dalam bentuk byte. Meski demikian, TCP tidak mengetahui batasan pesan-pesan di dalam byte stream TCP tersebut. Untuk melakukannya, hal ini diserahkan kepada protokol lapisan aplikasi (dalam DARPA Reference Model), yang harus menerjemahkan byte stream TCP ke dalam "bahasa" yang ia pahami. Universitas Stikubank Fakultas Teknologi Informasi 22

5. Memiliki layanan flow control: Untuk mencegah data terlalu banyak dikirimkan pada satu waktu, yang akhirnya membuat "macet" jaringan internetwork IP, TCP mengimplementasikan layanan flow control yang dimiliki oleh pihak pengirim yang secara terus menerus memantau dan membatasi jumlah data yang dikirimkan pada satu waktu. Untuk mencegah pihak penerima untuk memperoleh data yang tidak dapat disangganya (buffer), TCP juga mengimplementasikan flow control dalam pihak penerima, yang mengindikasikan jumlah buffer yang masih tersedia dalam pihak penerima. 6. Mengirimkan paket secara "one-to-one": hal ini karena memang TCP harus membuat sebuah sirkuit logis antara dua buah protokol lapisan aplikasi agar saling dapat berkomunikasi. TCP tidak menyediakan layanan pengiriman data secara one-to-many. 2. Program Server import java.io.*; import java.net.*; public class simpleserver public final static int TESTPORT = 1234; public static void main(string args[]) ServerSocket checkserver = null; String line; BufferedReader is = null; DataOutputStream os = null; Socket clientsocket = null; try checkserver = new ServerSocket(TESTPORT); System.out.println("Server Ready..."); catch (IOException e) System.out.println(e); try clientsocket = checkserver.accept(); is = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); Universitas Stikubank Fakultas Teknologi Informasi 23

os = new DataOutputStream(clientSocket.getOutputStream()); catch (Exception ei) ei.printstacktrace(); try line = is.readline(); System.out.println("From Client : " + line); os.writebytes(line); if (line.compareto("unisbank") == 0) os.writebytes("welcome To Unisbank."); else os.writebytes("sorry, this is private area."); catch (IOException e) System.out.println(e); try os.close(); is.close(); clientsocket.close(); catch (IOException ic) ic.printstacktrace(); Universitas Stikubank Fakultas Teknologi Informasi 24

3. Program Client import java.io.*; import java.net.*; public class simpleclient public final static int REMOTE_PORT = 1234; public final static String host = "localhost"; public static void main(string args[]) throws Exception Socket cl = null; BufferedReader is = null; DataOutputStream os = null; BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); String userinput = null; String output = null; try cl = new Socket(host, REMOTE_PORT); is = new BufferedReader(new InputStreamReader(cl.getInputStream())); os = new DataOutputStream(cl.getOutputStream()); catch(unknownhostexception e1) System.out.println("Unknown Host: " + e1); catch (IOException e2) System.out.println("Erorr io: " + e2); try System.out.print("Your University? "); userinput = stdin.readline(); os.writebytes(userinput + "\n"); catch (IOException ex) System.out.println("Error writing to server..." + ex); Universitas Stikubank Fakultas Teknologi Informasi 25

try output = is.readline(); System.out.println("From server: " + output); catch (IOException e) e.printstacktrace(); try is.close(); os.close(); cl.close(); catch (IOException x) System.out.println("Error writing..." + x); 4. Tugas Buatlah program untuk memasukkan nama anda ke server dari suatu client. Universitas Stikubank Fakultas Teknologi Informasi 26

Hari / Tgl : Judul Tugas TTD Dosen : Program Studi Nilai : Universitas Stikubank Fakultas Teknologi Informasi 27

PRAKTIKUM 7 UDP Socket Tujuan Instruksional Setelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk: 1. Memahami UDP Socket. 2. Mengimplementasikan UDP socket pada server dan client. 1. UDP Socket User Datagram Protocol (UDP), adalah salah satu protokol lapisan transpor TCP/IP yang mendukung komunikasi yang tidak andal (unreliable), tanpa koneksi (connectionless) antara host-host dalam jaringan yang menggunakan TCP/IP. UDP memiliki karakteristik-karakteristik berikut: 1. Connectionless (tanpa koneksi): Pesan-pesan UDP akan dikirimkan tanpa harus dilakukan proses negosiasi koneksi antara dua host yang hendak berukar informasi. 2. Unreliable (tidak andal): Pesan-pesan UDP akan dikirimkan sebagai datagram tanpa adanya nomor urut atau pesan acknowledgment. Protokol lapisan aplikasi yang berjalan di atas UDP harus melakukan pemulihan terhadap pesan-pesan yang hilang selama transmisi. Umumnya, protokol lapisan aplikasi yang berjalan di atas UDP mengimplementasikan layanan keandalan mereka masing-masing, atau mengirim pesan secara periodik atau dengan menggunakan waktu yang telah didefinisikan. 3. UDP menyediakan mekanisme untuk mengirim pesan-pesan ke sebuah protokol lapisan aplikasi atau proses tertentu di dalam sebuah host dalam jaringan yang menggunakan TCP/IP. Header UDP berisi field Source Process Identification dan Destination Process Identification. 4. UDP menyediakan penghitungan checksum berukuran 16-bit terhadap keseluruhan pesan UDP. 2. Program Server import java.net.*; import java.io.*; class ServerDatagram public static DatagramSocket ds; public static int clientport=800,serverport=900; public static void main (String args[]) throws Exception byte buffer[]= new byte[1024]; ds= new DatagramSocket (serverport); Universitas Stikubank Fakultas Teknologi Informasi 28

BufferedReader dis= new BufferedReader ( new InputStreamReader (System.in)); System.out.println ("Server menunggu input"); InetAddress i=inetaddress.getbyname ("Localhost"); while (true) System.out.print("Inputan Server: "); String str=dis.readline(); if ((str==null str.equals ("end")) ) break; buffer=str.getbytes(); ds.send ( new DatagramPacket (buffer,str.length(), i, clientport)); 3. Program Client import java.net.*; import java.io.*; class ClientDatagram public static DatagramSocket d; public static byte buffer[] = new byte [1024]; public static int clientport=800,serverport =900; public static void main (String args[]) throws Exception d= new DatagramSocket (clientport); System.out.println ("Client sedang menunggu server mengirimkan data "); System.out.println ("tekan Ctrl + C untuk mengakhiri "); while (true) DatagramPacket p = new DatagramPacket (buffer, buffer.length); d.receive (p); String ps= new String (p.getdata(),0,p.getlength()); System.out.println("From Server: "+ ps); 4. Tugas Modifikasilah program diatas agar menjadi program yang dapat digunakan untuk saling mengirim pesan pada beberapa komputer. Universitas Stikubank Fakultas Teknologi Informasi 29

Hari / Tgl : Judul Tugas TTD Dosen : Program Studi Nilai : Universitas Stikubank Fakultas Teknologi Informasi 30

PRAKTIKUM 8 Komunikasi Antar Obyek Tujuan Instruksional Setelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk: 1. Memahami cara komunikasi obyek melalui stream. 2. Memahami cara komunikasi obyek melalui socket. 1. Komunikasi Obyek Melalui Stream Pada pemrograman socket, pada umumnya data yang dikirimkan berupa data stream. Stream memungkinkan juga untuk mengirimkan obyek melalui suatu mekanisme yang disebut serialisasi objek. Serialisasi objek (Object Serialization) adalah suatu teknik yang memungkinkan program untuk menyimpan status objek ke dalam sebuah file, kemudian dibaca kembali dari file ke memori atau dikirimkan melalui jaringan. Staff.java import java.io.*; public class Staff implements Serializable String nama; String divisi; int umur; public Staff(String nama, String divisi, int umur) this.nama=nama; this.divisi=divisi; this.umur= umur; public void print() System.out.println("Data Staff: "); System.out.println("Nama : " + nama); System.out.println("Divisi : " + divisi); System.out.println("Umur : "+ umur); Universitas Stikubank Fakultas Teknologi Informasi 31

ObjectClient.java import java.net.*; import java.io.*; public class ObjectClient private static int SRV_PORT = 5000; private static ObjectOutputStream os=null; public static void main(string argv[]) throws Exception try Socket soketclient= new Socket("127.0.0.1", SRV_PORT); os= new ObjectOutputStream(soketClient.getOutputStream()); Staff pegawai= new Staff("Steve","IT",24); os.writeobject(pegawai); System.out.println("Client mengirim data pegawai:"); pegawai.print(); catch(exception e) e.printstacktrace(); ObjectServer.java import java.net.*; import java.io.*; public class ObjectServer private static int SRV_PORT=5000; private static ObjectInputStream is=null; public static void main(string argv[]) throws Exception ServerSocket soketserver= new ServerSocket(SRV_PORT); Socket soketclient= soketserver.accept(); is= new ObjectInputStream(soketClient.getInputStream()); Staff pegawai= (Staff) is.readobject(); System.out.println("Server menerima data Pegawai"); pegawai.print(); Universitas Stikubank Fakultas Teknologi Informasi 32

2. Komunikasi Objek Melalui Stream Suatu obyek dari kelas yang menerapkan interface serializable atau externalizable dapat diserialisasikan melalui socket karena ServerSocket dan Socket juga mendukung stream. Dengan demikian suatu objek dapat juga dikirimkan dan diterima melalui mekanisme socket. PegawaiEx.java import java.io.*; public class PegawaiEx implements Externalizable private String nama; private int umur; private int gaji; public PegawaiEx() public PegawaiEx(String nama, int umur, int gaji) this.nama = nama; this.umur = umur; this.gaji = gaji; public void writeexternal(objectoutput objout) throws IOException objout.writeobject("nama : " + this.nama); objout.writeint(this.umur); objout.writeint(this.gaji); public void readexternal(objectinput objin) throws IOException, ClassNotFoundException this.nama = (String) objin.readobject(); this.umur = objin.readint(); this.gaji = objin.readint(); public String tostring() Universitas Stikubank Fakultas Teknologi Informasi 33

return "Data untuk " + this.nama + "\n" + this.umur + "\n" + this.gaji; PegawaiClient.java import java.io.*; import java.net.*; public class PegawaiClient public static void main(string[] args) Socket soc = null; PegawaiEx pegawaiinput = null; try soc = new Socket("localhost", 4545); ObjectInput ois = new ObjectInputStream(soc.getInputStream()); ObjectOutput ous = new ObjectOutputStream(soc.getOutputStream()); pegawaiinput = new PegawaiEx("Client", 10,150); ous.writeobject(pegawaiinput); ous.flush(); String s = (String) ois.readobject(); System.out.println(s); ous.close(); ois.close(); catch (Exception e) e.printstacktrace(); System.out.println(e.getMessage()); Universitas Stikubank Fakultas Teknologi Informasi 34

PegawaiServer.java import java.io.*; import java.net.*; public class PegawaiServer public static void main(string[] args) ServerSocket ser = null; Socket soc = null; PegawaiEx pegawaiinput = null; try ser = new ServerSocket(4545); System.out.println("Server siap"); soc = ser.accept(); ObjectInput ois = new ObjectInputStream(soc.getInputStream()); ObjectOutput ous = new ObjectOutputStream(soc.getOutputStream()); pegawaiinput = (PegawaiEx) ois.readobject(); System.out.println("Hasil Kiriman Client"); System.out.println(pegawaiInput); String res = new String ("Data Pegawai telah diterima"); ous.writeobject(res); ous.flush(); ous.close(); ois.close(); catch (Exception e) e.printstacktrace(); System.out.println(e.getMessage()); Universitas Stikubank Fakultas Teknologi Informasi 35

Hari / Tgl : Judul Tugas TTD Dosen : Program Studi Nilai : Universitas Stikubank Fakultas Teknologi Informasi 36

PRAKTIKUM 9 Multicast Socket Tujuan Instruksional Setelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk: 1. Memahami tentang multicast Socket. 2. Mampu membuat program sederhana. 1. Multicast Socket Multicasting lebih luas daripada unicast, multicasting mengirimkan data dari satu host ke host yang berbeda, namun tidak untuk semua orang, data hanya pergi ke klien yang telah menyatakan bergabung dengan kelompok multicast tertentu. Di Java, multicast data menggunakan kelas java.net.multicastsocket, sebuah subclass dari java.net.datagramsocket. Perilaku MulticastSocket adalah sangat mirip dengan DatagramSocket's. Anda memasukkan data Anda pada objek DatagramPacket yang Anda kirim dan terima dengan MulticastSocket. Konstruktor ini melemparkan SocketException jika Socket tidak dapat dibuat. Sebagai contoh: try MulticastSocket ms = new MulticastSocket( ); // send some datagrams... catch (SocketException se) System.err.println(se); 2. Contoh Program MulticastSniffer.java import java.net.*; import java.io.*; public class MulticastSniffer public static void main(string[] args) InetAddress group = null; int port = 0; try Universitas Stikubank Fakultas Teknologi Informasi 37

group = InetAddress.getByName(args[0]); port = Integer.parseInt(args[1]); catch (Exception ex) System.err.println( "Usage: java MulticastSniffer multicast_address port"); System.exit(1); MulticastSocket ms = null; try ms = new MulticastSocket(port); ms.joingroup(group); byte[] buffer = new byte[8192]; while (true) DatagramPacket dp = new DatagramPacket(buffer, buffer.length); ms.receive(dp); String s = new String(dp.getData( )); System.out.println(s); catch (IOException ex) System.err.println(ex); finally if (ms!= null) try ms.leavegroup(group); ms.close( ); catch (IOException ex) MulticastSender.java import java.net.*; import java.io.*; Universitas Stikubank Fakultas Teknologi Informasi 38

public class MulticastSender public static void main(string[] args) InetAddress ia = null; int port = 0; byte ttl = (byte) 1; try ia = InetAddress.getByName(args[0]); port = Integer.parseInt(args[1]); if (args.length > 2) ttl = (byte) Integer.parseInt(args[2]); catch (Exception ex) System.err.println(ex); System.err.println( "Usage: java MulticastSender multicast_address port ttl"); System.exit(1); byte[] data = "Here's some multicast data\r\n".getbytes( ); DatagramPacket dp = new DatagramPacket(data, data.length, ia, port); try MulticastSocket ms = new MulticastSocket( ); ms.joingroup(ia); for (int i = 1; i < 10; i++) ms.send(dp, ttl); ms.leavegroup(ia); ms.close( ); catch (SocketException ex) System.err.println(ex); catch (IOException ex) System.err.println(ex); 3. Tugas Tentukan aplikasi apa saja yang memerlukan multicast. Universitas Stikubank Fakultas Teknologi Informasi 39

Hari / Tgl : Judul Tugas TTD Dosen : Program Studi Nilai : Universitas Stikubank Fakultas Teknologi Informasi 40

PRAKTIKUM 10 Aplikasi Terapan Tujuan Instruksional Setelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk: 1. Memahami proses pengiriman email 2. Membuat program untuk mengirim email 1. Proses Pengiriman Email Aplikasi email sebenarnya adalah bentuk dari pelayanan SMTP (Simple Mail Transfer Protocol). SMTP adalah suatu protokol pesan untuk layanan pengiriman pesan email. Pengiriman pesan email bisa dilakukan tanpa harus memiliki account email pada SMTP server. Untuk mengirimkan email, aplikasi yang akan dibuat harus menghubungi mail server yang akan memforward pesan ke mail server yang mengelola account email tujuan. Jadi hal pertama yang harus diketahui adalah alamat IP/nama mail server dan port yang digunakannya. Setelah mengetahui kedua hal tersebut, perlu juga diketahui protokol pesannya. Secara umum setiap pesan memiliki alamat email tujuan, email pengirim, email pengirim yang akan tampil di pesan, judul pesan dan isi pesan. Pengiriman email bisa menggunakan cara sederhana melalui program Telnet. Telnet memungkinkan pengguna untuk mengakses smtp/mail server melalui port 25 untuk mengirim email atau port 110 untuk mengakses Pop3 mail. Perintah yang bisa digunakan adalah sebagai berikut: telnet namaserver port Proses pengiriman email dapat dilakukan melalui langkah-langkah sebagai berikut: 1. Melakukan koneksi ke mail server melalui port 25 2. Menguji respon server (optional) 3. Memberitahukan asal email 4. Memberitahukan tujuan email 5. Menuliskan data atau isi email 6. Menutup koneksi Proses pengiriman dilakukan dengan memberikan perintah-perintah sebagai berikut: Mail from : <email_pengirim> untuk menunjukkan siapa pengirim email. Rcpt to: <email_tujuan> untuk menunjukkan siapa penerima email. Data untuk menuliskan pesan email. Data dapat berisi atribut subject, from dan to serta isi pesan. Isi data diakhiri dengan tanda titik(. ). Quit untuk menutup koneksi dengan server mail. Universitas Stikubank Fakultas Teknologi Informasi 41

Gambar 10.1 Contoh proses 2. Membuat Program Bahasa Java telah menyediakan paket untuk mengakses socket melalui paket java.net. Adapun kelas yang akan digunakan untuk mengakses socket server adalah kelas Socket. Format penggunaannya adalah sebagai berikut: Socket( nama_server/ip_address, port) Untuk mengirimkan perintah ke server saat koneksi terjadi digunakan bantuan paket java.io seperti DataOutputStream untuk menginput perintah ke server dan BufferedReader untuk mendapatkan respon dari server. import java.net.*; import java.io.*; public class emailku public static void main(string[] argc) Socket s1; DataOutputStream p1=null; BufferedReader d1=null; String recvreply; try Universitas Stikubank Fakultas Teknologi Informasi 42

s1=new Socket("mail.sertifikasi.web.id",25); p1=new DataOutputStream(s1.getOutputStream()); d1=new BufferedReader(new InputStreamReader(s1.getInputStream())); recvreply=d1.readline(); System.out.println("Server Response : " + recvreply); p1.writebytes("helo mail.sertifikasi.web.id\r\n"); recvreply=d1.readline(); System.out.println("Server Response : " + recvreply); p1.writebytes("mail FROM:<felstly@gmail.com>\r\n"); recvreply=d1.readline(); System.out.println("Server Response : " + recvreply); p1.writebytes("rcpt TO:<felix@sertifikasi.web.id>\r\n"); recvreply=d1.readline(); System.out.println("Server Response : " + recvreply); p1.writebytes("data\r\n"); recvreply=d1.readline(); System.out.println("Server Response : " + recvreply); p1.writebytes("subject:perkenalan\r\n"); p1.writebytes("from:<felstly@gmail.com>\r\n"); p1.writebytes("to:<felix@sertifikasi.web.id>\r\n"); p1.writebytes("\r\n"); p1.writebytes("hello,\r\n"); p1.writebytes("saya hanya ingin memperkenalkan diri.\r\n"); p1.writebytes("silahkan kunjungi website kami di:\r\n"); p1.writebytes("www.sertifikasi.web.id\r\n"); p1.writebytes("\r\n"); p1.writebytes("felix\r\n"); p1.writebytes("============\r\n"); p1.writebytes(".\r\n"); recvreply=d1.readline(); System.out.println("Server Response : " + recvreply); p1.writebytes("quit\r\n"); Universitas Stikubank Fakultas Teknologi Informasi 43

recvreply=d1.readline(); System.out.println("Server Response : " + recvreply); s1.close(); System.out.println("Closed Connection with Server"); catch(ioexception e) System.out.println("Error in Connecting to Port"); 3. Tugas Modifikasi program diatas supaya dapat mengirimkan email secara flexibel. (Semua input diberikan oleh pemakai program). Universitas Stikubank Fakultas Teknologi Informasi 44

Hari / Tgl : Judul Tugas TTD Dosen : Program Studi Nilai : Universitas Stikubank Fakultas Teknologi Informasi 45

DAFTAR PUSTAKA Elliotte Rusty Harold, 2004, Java Network Programming, O'Reilly. Jan Graba, 2007, An Introduction to Network Programming with Java, Springer Science+Business Media, LLC. David Reilly, Michael Reilly, 2002, Java Network Programming and Distributed Computing, Addison Wesley Universitas Stikubank Fakultas Teknologi Informasi 46