Anda di halaman 1dari 46

BUKU PETUNJUK PRAKTIKUM

PEMROGRAMAN JARINGAN

Oleh:
Felix Andreas Sutanto, M.Cs

LABORATORIUM KOMPUTER
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INFORMASI
UNIVERSITAS STIKUBANK SEMARANG

Praktikum Pemrograman Jaringan


DAFTAR ISI

Universitas Stikubank Fakultas Teknologi Informasi

Praktikum Pemrograman Jaringan

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

Praktikum Pemrograman Jaringan


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

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

Universitas Stikubank Fakultas Teknologi Informasi

Praktikum Pemrograman Jaringan


Hari / Tgl :

Judul Tugas

Program Studi

Universitas Stikubank Fakultas Teknologi Informasi

TTD Dosen :
Nilai :

Praktikum Pemrograman Jaringan

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

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

Praktikum Pemrograman Jaringan


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

Praktikum Pemrograman Jaringan


Hari / Tgl :

Judul Tugas

Program Studi

Universitas Stikubank Fakultas Teknologi Informasi

TTD Dosen :
Nilai :

10

Praktikum Pemrograman Jaringan

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

Praktikum Pemrograman Jaringan


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

Praktikum Pemrograman Jaringan


Hari / Tgl :

Judul Tugas

Program Studi

Universitas Stikubank Fakultas Teknologi Informasi

TTD Dosen :
Nilai :

13

Praktikum Pemrograman Jaringan

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

Praktikum Pemrograman Jaringan


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

Praktikum Pemrograman Jaringan


in.close();
}
}
3. Tugas
Buat program untuk mendapatkan informasi dari alamat URL bebas.

Universitas Stikubank Fakultas Teknologi Informasi

16

Praktikum Pemrograman Jaringan


Hari / Tgl :

Judul Tugas

Program Studi

Universitas Stikubank Fakultas Teknologi Informasi

TTD Dosen :
Nilai :

17

Praktikum Pemrograman Jaringan

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
20
21
23
25
53
67
68
80
110
137
138
139
161
445

Keterangan
File Transfer Protocol/FTP (digunakan untuk saluran data)
File Transfer Protocol/FTP (digunakan untuk saluran kontrol)
Telnet
SMTP yang digunakan untuk mengirim e-mail
Domain Name System (DNS) Name Query
BOOTP client (Dynamic Host Configuration Protocol [DHCP])
BOOTP server (DHCP)
Hypertext Transfer Protocol yang digunakan untuk World Wide Web.
Post Office Protocol 3/POP3 untuk menerima e-mail.
NetBIOS Name Service
NetBIOS Datagram Service
NetBIOS over TCP session service
Simple Network Management Protocol (SNMP)
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

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

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

Universitas Stikubank Fakultas Teknologi Informasi

20

Praktikum Pemrograman Jaringan


Hari / Tgl :

Judul Tugas

Program Studi

Universitas Stikubank Fakultas Teknologi Informasi

TTD Dosen :
Nilai :

21

Praktikum Pemrograman Jaringan

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

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

Praktikum Pemrograman Jaringan


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

Praktikum Pemrograman Jaringan


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

Praktikum Pemrograman Jaringan


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

Praktikum Pemrograman Jaringan


Hari / Tgl :

Judul Tugas

Program Studi

Universitas Stikubank Fakultas Teknologi Informasi

TTD Dosen :
Nilai :

27

Praktikum Pemrograman Jaringan

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

Praktikum Pemrograman Jaringan


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

Praktikum Pemrograman Jaringan


Hari / Tgl :

Judul Tugas

Program Studi

Universitas Stikubank Fakultas Teknologi Informasi

TTD Dosen :
Nilai :

30

Praktikum Pemrograman Jaringan

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

Praktikum Pemrograman Jaringan


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

Praktikum Pemrograman Jaringan


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

Praktikum Pemrograman Jaringan


{
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

Praktikum Pemrograman Jaringan


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

Praktikum Pemrograman Jaringan


Hari / Tgl :

Judul Tugas

Program Studi

Universitas Stikubank Fakultas Teknologi Informasi

TTD Dosen :
Nilai :

36

Praktikum Pemrograman Jaringan

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

Praktikum Pemrograman Jaringan


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

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

Universitas Stikubank Fakultas Teknologi Informasi

39

Praktikum Pemrograman Jaringan


Hari / Tgl :

Judul Tugas

Program Studi

Universitas Stikubank Fakultas Teknologi Informasi

TTD Dosen :
Nilai :

40

Praktikum Pemrograman Jaringan

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

Praktikum Pemrograman Jaringan

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

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

Praktikum Pemrograman Jaringan


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

Praktikum Pemrograman Jaringan


Hari / Tgl :

Judul Tugas

Program Studi

Universitas Stikubank Fakultas Teknologi Informasi

TTD Dosen :
Nilai :

45

Praktikum Pemrograman Jaringan


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

Anda mungkin juga menyukai