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.