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.
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);
}}}
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.

















