i create a DatagramSocket in the main thread,and then create a inner class thread to listen the port. when i close the DatagramSocket in the main t
Socket.close() does the trick. Or you can use socket.setSoTimeout(1000); the setSoTimeout() method allows you to define a timeout period in milliseconds. For example:
//if the socket does not receive anything in 1 second,
//it will timeout and throw a SocketTimeoutException
//you can catch the exception if you need to log, or you can ignore it
socket.setSoTimeout(1000);
socket.receive();
Here is the javadoc for setSoTimeout();
By default, the timeout is 0 which is indefinite, by changing it to a positive number, it will only block for the amount you specified. (Make sure you set it before calling socket.receive())
Here is an example answered on this site: set timeout for socket receive