TCP gibi UDP servisine de soketler üzerinden giriş sağlanır. UDP servisine giriş yapabilmek için bir veri paketi soketi elemanı oluşturulur.
DatagramSocket tercihe bağlı olarak soketi bağlayacak bir kapı numarasını kabul eder. Eğer kapı numarası belirtilmemişse işletim sistemi
boşta olan bir kapı numarasını yeni oluşturulan sokete atar. Genellikle istemci uygulamalar soket yaratırken kapı numarası belirtmezler.
Bir veri paketi soketi şu şekilde oluşturulabilir:
DatagramSocket clientSocket = new DatagramSocket();
Tek bir soket üzerinden birbirinden farklı ağ uygulamalarından paket almak ve onlara paket göndermek olanaklıdır. Bu sebeple bir ileti
gönderilirken iletinin varış noktası da belirtilmiş olmalıdır. İletiler bir soket üzerinden gönderilmek üzere veri paketleri
(DatagramPacket) içinde sıkıştırılmalıdır. Ayrıca paket mesajın iletileceği adresi ve kapı numarasını da içermelidir. Dolayısıyla basit
bir ileti hostName ile belirtilen sunucu üzerinde çalışan bir uygulamaya port ile belirtilen kapı numarası üzerinden aşağıdaki şekilde
gönderilebilir:
String request = "hello world!";
byte msg[] = request.getBytes();
InetAddress address = InetAddress.getByName(hostName);
DatagramPacket packet = new DatagramPacket(msg,
msg.length, adress, port);
clientSocket.send(packet);
Diğer uygulamalardan ileti almak için DatagramSocket'a ait receive() yöntemi kullanılabilir.
receive() yöntemi gelen paket için bir yer tutucuya gereksinim duyar. Bu nedenle yeni DatagramPacket
elemanı yaratılıp receive() yöntemine parametre olarak verilmelidir:
byte msg[] = new char[1024];
DatagramPacket packet = new DatagramPacket(msg, msg.length);
clientSocket.receive(packet);
Not:
receive() yöntemi uygulamaya bir datagram ulaşana kadar engelleme yapar. Engellemeyi önlemek için
DatagramSocket'e ait setSoTimeout(timeout)
yöntemi kullanılabilir. Eğer ara süresince hiç bir datagram gelmezse yöntem geri döner ve SocketTimeoutException
istisnası ortaya çıkar.