Well, your has no issues with it. Except for the thing that the constructor used to create a datagram socket for receiving must not include the ip address. It should be like this
DatagramPacket p = new DatagramPacket(buffer, buffer.length);
You are encountering a bind exception. Such exceptions occur if the underlying operating system is unable to create an socket at the specified port. It might be for the following reasons:
1. The port 53 is already in use. In this case try another port.
2. You may not have permissions to open a socket. If you are under a POSIX (UNIX, Linux, BSD, Mac etc.) environment, then you require to be root to open a connection on a privileged port (ports <1024).
Try using another port (54321 for eg.) be sure that it is open. If you are under a windows machine you can use Resmon.exe to monitor ports. For Unix you need the equivalent command which unfortunately I'm unable to recollect (have been away for months from linux... excuse me).