Tujuan Instruksional
Setelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk:
- Memahami UDP Socket.
- 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:
- Connectionless (tanpa koneksi): Pesan-pesan UDP akan dikirimkan tanpa harus dilakukan proses negosiasi koneksi antara dua host yang hendak berukar informasi.
- 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.
- 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.
- 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);
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);
}
}
}