import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.nio.charset.StandardCharsets;

public class PingUdp {
    public static void main(String[] args) throws Exception {
        // Satu socket mengirim ke dirinya sendiri lewat loopback
        try (DatagramSocket socket = new DatagramSocket(0, InetAddress.getLoopbackAddress())) {
            System.out.println("socket terikat : " + socket.isBound());
            System.out.println("terhubung      : " + socket.isConnected());

            String pesan = "detak Budi";
            byte[] data = pesan.getBytes(StandardCharsets.UTF_8);
            DatagramPacket paket = new DatagramPacket(
                    data, data.length, InetAddress.getLoopbackAddress(), socket.getLocalPort());
            socket.send(paket);

            byte[] penyangga = new byte[1024];
            DatagramPacket terima = new DatagramPacket(penyangga, penyangga.length);
            socket.receive(terima);

            String hasil = new String(terima.getData(), 0, terima.getLength(), StandardCharsets.UTF_8);
            System.out.println("pesan diterima : " + hasil);
            System.out.println("panjang data   : " + terima.getLength());
        }
    }
}
