package runjettyrun.utils;
import java.io.IOException;
import java.net.DatagramSocket;
import java.net.ServerSocket;
public class PortUtil {
/**
* a random avaiable port between start and end
* @param start
* @param end
* @return
*/
public static int findAAvailablePort(int start,int end){
int finalPort = -1;
for( int i = 0 ; i< 20 ; ++i){
int port = start + (int) (Math.random()* (end-start)) ;
if(available(port)){
finalPort = port;
break;
}
}
return finalPort;
}
public static boolean available(int port) {
if (port <= 0) {
throw new IllegalArgumentException("Invalid start port: " + port);
}
ServerSocket ss = null;
DatagramSocket ds = null;
try {
ss = new ServerSocket(port);
ss.setReuseAddress(true);
ds = new DatagramSocket(port);
ds.setReuseAddress(true);
return true;
} catch (IOException e) {
} finally {
if (ds != null) {
ds.close();
}
if (ss != null) {
try {
ss.close();
} catch (IOException e) {
/* should not be thrown */
}
}
}
return false;
}
}