Assalamu'alaikum warahmatullahi wabarakatuh
PENGERTIAN UDP
UDP adalah kepanjangan dari User Datagram Protocol. Salah satu protocol yang menjadi lapisan transport TCP/IP sehingga mendukung atau memungkinkan terjadinya komunikasi yang tidak andal (unreliable), tanpa adanya koneksi antar host jaringan yang menggunakan TCP/IP. Protokol jenis ini didefinisikan dalam RFC 768.
Melalui UDP, aplikasi maupun software dapat mengirimkan pesan kepada komputer lain di dalam jaringan lain tanpa perlu melakukan komunikasi awal. UDP menerapkan komunikasi secara sederhana dengan mekanisme yang minimalis. Terdapat proses checksum guna memproteksi integritas data. UDP digunakan untuk komunikasi sederhana semacam DNS (Domain Name System), NTP (Network Time Protocol), DHCP (Dinamic Host Configuration) dan RIP. Pun UDP (User Data Protocol) juga dapat digunakan untuk mengirimkan sebuah atau beberapa jumlah informasi yang lebih menekankan kecepatan dibandingkan kehandalan. Dengan pemanfaatan UDP yang tepat, transaksi informasi dapat berlangsung dengan lebih cepat meskipun agak kurang akurat.
Ada beberapa tahapan cara kerja UDP yang dilakukan, setiap tahapan kerja saling sinambung. Berikut penjelasan yang bersifat singkat.
- Paket berisi client port dan port sumber berbentuk file text dikirim di dalam UDP Header
- Paket isi port client dan port sumber audio dikirim ke server dalam UDP Header
- Tujuan UDP membaca nomor port tujuan dan proses data
- Paket asli mempunyai port tujuan, sehingga server bisa mengirimkan kembali data ke FTFP Client
- Point 3 dan 4 berulang kembali ketika file audio dikirimkan client
- Ketika aplikasi ingin mengirim data, UDP tidak akan membuffer ataupun memfragmen tiap data yang masuk
- Karena data tidak mengalami prossesing data yang berbelit terutama karena tidak memfragmen data, maka jika data lebih besar daripada MTU, lapisan IP yang harus memfragmennya.
CONTOH SOURCE CODE UDPSERVER DAN UDPCLIENT menggunakan bahasa pemrograman java
UDPserver.java
import java.io.*; //melakukan import library input/ouput
import java.net.*; //melakukan import library network
public class UDPServer { //memberikan nama kelas sekaligus nama penyimpanan file java
private static final int PORT = 1234; //fungsi private untuk value port
private static DatagramSocket dgramSocket; //fungsi private protokol lapisan
transpor TCP/IP
private static DatagramPacket inPacket, outPacket;//fungsi private protokol
TCP/IP datagram paket masuk dan paket keluar
private static byte[] buffer; //fungsi private proses komputer dgn hitungan byte
public static void main(String args[]) { //membuat method utama
System.out.println("Opening Port.....\n"); //menampilkan teks opening port
try { //membuat blok percobaan jika terjadi exception
dgramSocket = new DatagramSocket(PORT);
} catch (SocketException e) { //pengecualian jika terdapat kesalahan dalam
percobaan
System.out.println("Unable to attachto port !");
System.exit(1);
}
run(); //memanggil fungsi run
}
private static void run() { //fungsi run yang bersifat private
try { //membuat blok percobaan jika terjadi exception
String messageIn, messageOut; //data dengan tipe data String
int numMessages = 0; //data dengan tipe data integer
do { //Perulangan menggunakan do while berfungsi untuk membaca batas
penggunaan sistem
buffer = new byte[256];
inPacket = new DatagramPacket(buffer, buffer.length);
dgramSocket.receive(inPacket);
InetAddress clientAddress
= inPacket.getAddress();
int clientPort = inPacket.getPort();
messageIn = new String(inPacket.getData(), 0, inPacket.getLength());
System.out.println("Message Received");
numMessages++;
messageOut = ("Message " + numMessages + ":"
+ messageIn);
outPacket = new DatagramPacket(messageOut.getBytes(),
messageOut.length(), clientAddress, clientPort);
dgramSocket.send(outPacket);
} while (true);
} catch (IOException e) { //pengecualian jika terdapat kesalahan dalam
percobaan
e.printStackTrace();
} finally { //melakukan finally pada system
System.out.println("\nClosing Connection..."); //teks menutup system
dgramSocket.close(); //fungsi menutup sistem
}
}
}
UDPClient.java
import java.io.*; //melakukan import library input/ouput
import java.net.*; //melakukan import library network
public class UDPServer { //memberikan nama kelas sekaligus nama penyimpanan file java
private static final int PORT = 1234; //fungsi private untuk value port
private static DatagramSocket dgramSocket; //fungsi private protokol lapisan
transpor TCP/IP
private static DatagramPacket inPacket, outPacket;//fungsi private protokol
TCP/IP datagram paket masuk dan paket keluar
private static byte[] buffer; //fungsi private proses komputer dgn hitungan byte
public static void main(String args[]) { //membuat method utama
try { //membuat blok percobaan jika terjadi exception
host = InetAddress.getLocalHost(); //membuka dan membaca port localhost
} catch (UnknownHostException e) { //pengecualian jika terdapat kesalahan dalam
percobaan
System.out.println("Host ID Not Found");
System.exit(1);
}
run(); //memanggil fungsi run
}
private static void run() { //fungsi run yang bersifat private
try { //membuat blok percobaan jika terjadi exception
dgramSocket = new DatagramSocket(); //variabel datagramsocket
BufferedReader userEntry = new BufferedReader(new InputStreamReader(System.in));
String message = "", response = ""; //data dengan tipe data string
do { //Perulangan menggunakan do while berfungsi untuk membaca batas
penggunaan sistem
System.out.println("Enter message:");
message = userEntry.readLine();
if (!message.equals("CLOSE")) {
outPacket = new DatagramPacket(message.getBytes(), message.length(), host, PORT);
dgramSocket.send(outPacket);
buffer = new byte[256];
inPacket = new DatagramPacket(buffer, buffer.length);
dgramSocket.receive(inPacket);
response = new String(inPacket.getData(), 0, inPacket.getLength());
System.out.println("SERVER :" + response);
}
} while (!message.equals("CLOSE"));
} catch (IOException e) { //pengecualian jika terdapat kesalahan dalam
percobaan
e.printStackTrace();
} finally { //melakukan finally pada system
System.out.println("\nClosing Connection..."); //teks menutup system
dgramSocket.close(); //fungsi menutup sistem
}
}
}
Hasil output dari kedua code diatas
NOTE: Compile dan jalan kedua code secara bersamaan menggunakan GITBASH atau COMMAND PROMPT
Komentar
Posting Komentar