Any way not to create a DatagramPacket? I guess there isn't. It probably also makes sense to pass in a Datagram instead of a byte[], otherwise we always allocate a superfluous Datagram().

It may make sense to keep a DatagramPacket as an instance field. According to http://download.java.net/jdk8/docs/api/java/net/DatagramPacket.html DatagramPacket has setters.

In general we want to avoid as many allocations as possible. Datagrams are potentially send very often, so things can add up quickly.