Datagramové služby jsou podporovány v balíku java.net dvěma třídami, DatagramSocket a DatagramPacket. DatagramSocket je interface přes který je DatagramPacket přenášen. DatagramPacket je jednoduše IP specifický wrapper pro blok dat.
Třída DatagramSocket představuje interface pro UDP protokol. Tato třída je schopna posílat a přijímat DatagramPacket přes UDP protokol. Nejčastěji požívané metody třídy DatagramSocket jsou:
Je třeba si uvědomit, že DatagramSocket jsou dva. Jeden pro příjem DatagramPackets, u kterého se specifikuje číslo lokálního portu, a jeden pro vysílání, kterému je číslo lokálního portu přiděleno systémem jako dočasné.
DatagramSocket reprezentuje datagram, přenášený prostřednictvím DatagramSocket. Nejčastěji používané metody třídy DatagramPacket jsou:
Datagramy je možné přenášet i s použitím třídy Socket. Musí se ale použít konstruktor Socket(InetAddress address, int port, Boolean useStream) a nastavit useStream na false.
Následující příklad slouží k testování obsazenosti UDP portů lokálního počítače.
Nejdříve se musí vytvořit DatagramPacket(), pak se vytvoří objekt DatagramSocket(), který se odešle metodou send().
Při příjmu se nejprve vytvoří objekt DatagramSocket nad daným portem a pošle se mu prázdný objekt DatagramPacket motodou DatagramSocket.receive(). Volající vlákno je blokováno dokud není datagram přijat. Pro zjištění adresy a portu volajícího lze použít metodu getPort() a getAddress(). Metoda getData() přenese data a metoda getLength() slouží k určení, jak jsou data dlouhá. Jsou-li přijímaná data delší než je velikost místa rezervovaného v bufferu, jsou data zkrácena na délku bufferu.
Jednoduchý datagramový server má následující strukturu:
Toto je příklad serveru pro datagramovou komunikaci.
Jednoduchý datagramový klient má následující strukturu:
Toto je příklad klienta pro datagramovou komunikaci, který spolupracuje s výše uvedeným serverem.