Nếu bạn không quan tâm đến cổng được sử dụng, hãy chỉ định một cổng 0 cho hàm tạo ServerSocket và nó sẽ lắng nghe trên bất kỳ cổng miễn phí nào.
ServerSocket s = new ServerSocket(0);
System.out.println("listening on port: " + s.getLocalPort());
Nếu bạn muốn sử dụng một bộ cổng cụ thể, thì cách dễ nhất có lẽ là lặp qua chúng cho đến khi một cổng hoạt động. Một cái gì đó như thế này:
public ServerSocket create(int[] ports) throws IOException {
for (int port : ports) {
try {
return new ServerSocket(port);
} catch (IOException ex) {
continue; // try next port
}
}
// if the program gets here, no port in the range was found
throw new IOException("no free port found");
}
Có thể được sử dụng như vậy:
try {
ServerSocket s = create(new int[] { 3843, 4584, 4843 });
System.out.println("listening on port: " + s.getLocalPort());
} catch (IOException ex) {
System.err.println("no available ports");
}