Pengertian UDP, cara kerja serta contoh penggunaan Source Code

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.

  1. Paket berisi client port dan port sumber berbentuk file text dikirim di dalam UDP Header
  2. Paket isi port client dan port sumber audio dikirim ke server dalam UDP Header
  3. Tujuan UDP membaca nomor port tujuan dan proses data
  4. Paket asli mempunyai port tujuan, sehingga server bisa mengirimkan kembali data ke FTFP Client
  5. Point 3 dan 4 berulang kembali ketika file audio dikirimkan client
  6. Ketika aplikasi ingin mengirim data, UDP tidak akan membuffer ataupun memfragmen tiap data yang masuk
  7. 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 inPacketoutPacket;//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 messageInmessageOut; //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(), 0inPacket.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 inPacketoutPacket;//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(), 0inPacket.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

Postingan populer dari blog ini

Cara Mudah Membuat Widget Container pada Flutter

The combination looping for and compilation education with Java Language's

Melakukan koneksi kirim pesan antar socket dengan port / host menggunakan bahasa java