UDP Socket : menggunakan konsep connectionless oriented dan unreliable data transfer sehingga aplikasi yang dibangun dengan UDP Socket tidak mementingkan ketepatan data tetapi lebih mementingkan akan delay waktu pada saat proses pengiriman data. Konsep connectionless oriented adalah suatu proses pengiriman data tidak disertai dengan tanggung jawab sehingga jika terjadi kesalahan pada saat proses pengiriman maka data tersebut tidak akan dikirim ulang ke tujuan. Konsep unreliable data transfer adalah sebuah proses pengiriman data dalam bentuk datagram tanpa nomor urut.
Berikut ini contoh program Udp socket programming
Pertama anda harus membuat project baru dengan nama UDPClient lalu ketikkan script berikut ke dalam class udpclient:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UDPClient { public static void main(String args[]) { DatagramSocket datagramSocket = null; String s; BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); try { datagramSocket = new DatagramSocket(); InetAddress inetAddress = InetAddress.getByName("127.0.0.1"); while (true) { System.out.print("Masukkan pesan anda : "); s = bufferedReader.readLine(); byte[] b = s.getBytes(); DatagramPacket datagramPacket = new DatagramPacket(b, b.length, inetAddress, 8888); datagramSocket.send(datagramPacket); byte[] buffer = new byte[65536]; DatagramPacket packet = new DatagramPacket(buffer, buffer.length); datagramSocket.receive(packet); byte[] data = packet.getData(); s = new String(data, 0, packet.getLength()); System.out.println(packet.getAddress().getHostName() + " : " + packet.getPort() + " : " + s); } } catch (IOException e) { System.out.println(e); }}}
Codingan diatas berfungsi sebagai client, dimana pada saat client dijalankan, anda dapat mengirim pesan ke server lalu server akan mengembalikan pesan anda kembali. Jika terdapat banyak client, maka pesan tersebut tidak akan syncronize dengan client yang lain akan tetapi pesan tersebut hanya syncronize dengan server.
Lalu buat sebuah project baru lagi dengan nama UDPServer lalu ketikkan script berikut
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; public class UDPServer { public static void main(String args[]) { DatagramSocket datagramSocket = null; try { datagramSocket = new DatagramSocket(8888); byte[] buffer = new byte[65536]; DatagramPacket datagramPacket = new DatagramPacket(buffer, buffer.length); System.out.println("socket server jalan, menunggu data yang dikirim"); while (true) { datagramSocket.receive(datagramPacket); byte[] data = datagramPacket.getData(); String s = new String(data, 0, datagramPacket.getLength()); System.out.println(datagramPacket.getAddress().getHostAddress() + " : " + datagramPacket.getPort() + " : " + s); s = "data yang terkirim : " + s; DatagramPacket packet = new DatagramPacket(s.getBytes(), s.getBytes().length, datagramPacket.getAddress(), datagramPacket.getPort()); datagramSocket.send(packet); } } catch (IOException e) { System.out.println(e); } } }
Pada codingan diatas dapat dilihat bahwa server akan menunggu data yang dikirim dari client, data yang dikirim adalah packet dalam bentuk datagram sehingga packet tersebut tidak memiliki penomoran pada saat pengiriman berlangsung.
Jalankan server terlebih dahulu kemudian jalankan program client. Berikut hasil dari program tersebut
Mungkin itu saja dari kesempatan ini dan terima kasih telah berkunjung.