यदि आप उपयोग किए जाने वाले पोर्ट को बुरा नहीं मानते हैं, तो ServerSocket कंस्ट्रक्टर को 0 का पोर्ट निर्दिष्ट करें और यह किसी भी मुक्त पोर्ट पर सुनेगा।
ServerSocket s = new ServerSocket(0);
System.out.println("listening on port: " + s.getLocalPort());
यदि आप बंदरगाहों के एक विशिष्ट सेट का उपयोग करना चाहते हैं, तो सबसे आसान तरीका संभवतः उनके माध्यम से चलना है जब तक कि एक काम नहीं करता। कुछ इस तरह:
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");
}
इस तरह इस्तेमाल किया जा सकता है:
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");
}