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

BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Feb 09, 2022

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

BUKU PETUNJUK PRAKTIKUMDESAIN MANAJEMEN JARINGAN

Oleh:Felix Andreas Sutanto, M.Cs

LABORATORIUM KOMPUTERPROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS TEKNOLOGI INFORMASIUNIVERSITAS STIKUBANK SEMARANG

Page 2: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

DAFTAR ISI

Universitas Stikubank – Fakultas Teknologi Informasi 2

Page 3: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

PRAKTIKUM 1

Pemrograman Jaringan

Tujuan InstruksionalSetelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk:

1. Memahami protocol jaringan seperti TCP, UDP dan SCTP2. Mengenal kemampuan Java untuk pemrograman jaringan

1. Protocol JaringanInternet 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 JavaPemrograman 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.

Gambar 1.1 Client menghubungi server

Universitas Stikubank – Fakultas Teknologi Informasi 3

Page 4: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

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 NetworkBeberapa 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

Page 5: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

• 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. TugasTuliskan struktur program java yang memanfaatkan kemampuan java dalam menangani jaringan.

Universitas Stikubank – Fakultas Teknologi Informasi 5

Page 6: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

Hari / Tgl : Judul Tugas TTD Dosen :

Program Studi Nilai :

Universitas Stikubank – Fakultas Teknologi Informasi 6

Page 7: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

PRAKTIKUM 2

Stream

Tujuan InstruksionalSetelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk:

1. Memahami penggunaan stream.2. Membuat program pemanfaatan stream.

1. StreamStream 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 WriterSubkelas 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

Page 8: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

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 ProgramListing 2.1import 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.2import 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 : "); angka1 = Integer.parseInt(br.readLine());

Universitas Stikubank – Fakultas Teknologi Informasi 8

Page 9: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

System.out.print("Masukkan Angka2 : "); angka2 = Integer.parseInt(br.readLine());

System.out.println("Angka1 Anda : "+ angka1); System.out.println("Angka2 Anda : "+ angka2); }}

4. TugasBuatlah program untuk input nim, nama, nilai uts dan uas.

Universitas Stikubank – Fakultas Teknologi Informasi 9

Page 10: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

Hari / Tgl : Judul Tugas TTD Dosen :

Program Studi Nilai :

Universitas Stikubank – Fakultas Teknologi Informasi 10

Page 11: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

PRAKTIKUM 3

Internet Address

Tujuan InstruksionalSetelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk:

1. Memahami internet address clas2. Membuat program penerapan internet address clas

1. Internet AddressKelas 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

Page 12: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

}catch (UnknownHostException e){System.out.println("Could not find this computer's address.");}}}

3. TugasBuatlah program seperti nslookup yang dapat memberikan informasi ip address dan nama host.

Universitas Stikubank – Fakultas Teknologi Informasi 12

Page 13: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

Hari / Tgl : Judul Tugas TTD Dosen :

Program Studi Nilai :

Universitas Stikubank – Fakultas Teknologi Informasi 13

Page 14: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

PRAKTIKUM 4

URL

Tujuan InstruksionalSetelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk:

1. Memahami tentang URL2. Membuat program untuk menerapkan URL Class

1. URL ClassKelas 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

Page 15: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

}}2. URL ConnectionURLConnection 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;

Universitas Stikubank – Fakultas Teknologi Informasi 15

Page 16: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

while ((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close(); }}

3. TugasBuat program untuk mendapatkan informasi dari alamat URL bebas.

Universitas Stikubank – Fakultas Teknologi Informasi 16

Page 17: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

Hari / Tgl : Judul Tugas TTD Dosen :

Program Studi Nilai :

Universitas Stikubank – Fakultas Teknologi Informasi 17

Page 18: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

PRAKTIKUM 5

SOCKET

Tujuan InstruksionalSetelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk:

1. Memahami penggunaan port.2. Memahami penggunaan socket untuk server dan client.

1. PortNomor-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. ContohWellKnownPort

Nomor port TCP Keterangan20 File Transfer Protocol/FTP (digunakan untuk saluran data)21 File Transfer Protocol/FTP (digunakan untuk saluran kontrol)23 Telnet25 SMTP yang digunakan untuk mengirim e-mail53 Domain Name System (DNS) Name Query67 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 Service138 NetBIOS Datagram Service139 NetBIOS over TCP session service161 Simple Network Management Protocol (SNMP)445 Server Message Block (SMB)

2. Socket Untuk ClientKelas 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

Page 19: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

{ 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 ServerKelas 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

Page 20: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

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. TugasBuat program untuk mendeteksi port yang aktif pada server mulai dari port 500 sampai 1000.

Universitas Stikubank – Fakultas Teknologi Informasi 20

Page 21: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

Hari / Tgl : Judul Tugas TTD Dosen :

Program Studi Nilai :

Universitas Stikubank – Fakultas Teknologi Informasi 21

Page 22: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

PRAKTIKUM 6

TCP Socket

Tujuan InstruksionalSetelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk:

1. Memahami socket TCP2. Membuat implementasi program.

1. Socket TCPTransmission 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

Page 23: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

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 Serverimport 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()));os = new DataOutputStream(clientSocket.getOutputStream());

Universitas Stikubank – Fakultas Teknologi Informasi 23

Page 24: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

}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

Page 25: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

3. Program Clientimport 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);}try

Universitas Stikubank – Fakultas Teknologi Informasi 25

Page 26: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

{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. TugasBuatlah program untuk memasukkan nama anda ke server dari suatu client.

Universitas Stikubank – Fakultas Teknologi Informasi 26

Page 27: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

Hari / Tgl : Judul Tugas TTD Dosen :

Program Studi Nilai :

Universitas Stikubank – Fakultas Teknologi Informasi 27

Page 28: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

PRAKTIKUM 7

UDP Socket

Tujuan InstruksionalSetelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk:

1. Memahami UDP Socket.2. Mengimplementasikan UDP socket pada server dan client.

1. UDP SocketUser 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 Serverimport 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 {

Universitas Stikubank – Fakultas Teknologi Informasi 28

Page 29: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

byte buffer[]= new byte[1024]; ds= new DatagramSocket (serverport); 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 Clientimport 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

Universitas Stikubank – Fakultas Teknologi Informasi 29

Page 30: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

Modifikasilah program diatas agar menjadi program yang dapat digunakan untuk saling mengirim pesan pada beberapa komputer.

Universitas Stikubank – Fakultas Teknologi Informasi 30

Page 31: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

Hari / Tgl : Judul Tugas TTD Dosen :

Program Studi Nilai :

Universitas Stikubank – Fakultas Teknologi Informasi 31

Page 32: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

PRAKTIKUM 8

Komunikasi Antar Obyek

Tujuan InstruksionalSetelah 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 StreamPada 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.javaimport 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 32

Page 33: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

ObjectClient.javaimport 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= newObjectOutputStream(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.javaimport 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 33

Page 34: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

2. Komunikasi Objek Melalui StreamSuatu 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.javaimport 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 34

Page 35: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

return "Data untuk " + this.nama + "\n" + this.umur + "\n" + this.gaji; }}

PegawaiClient.javaimport 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()); } }}

PegawaiServer.javaimport java.io.*;

Universitas Stikubank – Fakultas Teknologi Informasi 35

Page 36: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

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 36

Page 37: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

Hari / Tgl : Judul Tugas TTD Dosen :

Program Studi Nilai :

Universitas Stikubank – Fakultas Teknologi Informasi 37

Page 38: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

PRAKTIKUM 9

Multicast Socket

Tujuan InstruksionalSetelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk:

1. Memahami tentang multicast Socket.2. Mampu membuat program sederhana.

1. Multicast SocketMulticasting 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 ProgramMulticastSniffer.javaimport java.net.*;import java.io.*;

public class MulticastSniffer { public static void main(String[] args) { InetAddress group = null; int port = 0;

Universitas Stikubank – Fakultas Teknologi Informasi 38

Page 39: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

try { 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.javaimport java.net.*;import java.io.*;

Universitas Stikubank – Fakultas Teknologi Informasi 39

Page 40: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

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. TugasTentukan aplikasi apa saja yang memerlukan multicast.

Universitas Stikubank – Fakultas Teknologi Informasi 40

Page 41: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

Hari / Tgl : Judul Tugas TTD Dosen :

Program Studi Nilai :

Universitas Stikubank – Fakultas Teknologi Informasi 41

Page 42: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

PRAKTIKUM 10

Aplikasi Terapan

Tujuan InstruksionalSetelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk:

1. Memahami proses pengiriman email2. Membuat program untuk mengirim email

1. Proses Pengiriman EmailAplikasi 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 252. Menguji respon server (optional)3. Memberitahukan asal email4. Memberitahukan tujuan email5. Menuliskan data atau isi email6. 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 42

Page 43: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

Gambar 10.1 Contoh proses

2. Membuat ProgramBahasa 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 43

Page 44: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

{ 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:<[email protected]>\r\n"); recvreply=d1.readLine(); System.out.println("Server Response : " + recvreply);

p1.writeBytes("RCPT TO:<[email protected]>\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:<[email protected]>\r\n"); p1.writeBytes("To:<[email protected]>\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"); recvreply=d1.readLine();

Universitas Stikubank – Fakultas Teknologi Informasi 44

Page 45: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

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. TugasModifikasi program diatas supaya dapat mengirimkan email secara flexibel. (Semua input diberikan oleh pemakai program).

Universitas Stikubank – Fakultas Teknologi Informasi 45

Page 46: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

Hari / Tgl : Judul Tugas TTD Dosen :

Program Studi Nilai :

DAFTAR PUSTAKA

Universitas Stikubank – Fakultas Teknologi Informasi 46

Page 47: BUKU PETUNJUK PRAKTIKUM DESAIN MANAJEMEN JARINGAN

Praktikum Pemrograman Jaringan

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 47