Только код JavaScript без зависимостей:
var p = {"p1": "value1", "p2": "value2", "p3": "value3"};
keys = Object.keys(p); // ["p1", "p2", "p3"]
for(i = 0; i < keys.length; i++){
console.log(keys[i] + "=" + p[keys[i]]); // p1=value1, p2=value2, p3=value3
}
Hrm, после чтения документов, я не думаю, что Вы можете. Можно или связать с любым портом, затем снова переплести, если это не приемлемо, или неоднократно связывайте с портом в диапазоне, пока Вы не успешно выполняетесь. Второй метод будет самым "эффективным".
Я беспокоюсь об этом ответе, потому что это... неэлегантно, все же я действительно не могу найти ничто больше ни одним:/
Привязка сокета любому франко-порт является (обычно) функцией поддержки сокета операционной системы; это не характерно для Java. Солярис, например, поддержки, корректирующие эфемерный диапазон портов посредством команды ndd. Но только корень может скорректировать диапазон, и он влияет на всю систему, не только Вашу программу.
Если регулярное эфемерное обязательное поведение не удовлетворяет Вашим потребностям, необходимо будет, вероятно, записать собственному использованию Socket.bind ().
Вот код, в котором Вы нуждаетесь:
public static Socket getListeningSocket() {
for ( int port = MIN_PORT ; port <= MAX_PORT ; port++ )
{
try {
ServerSocket s = new ServerSocket( port );
return s; // no exception means port was available
} catch (IOException e) {
// try the next port
}
}
return null; // port not found, perhaps throw exception?
}
Вы могли бы поглядеть на код Java, который реализует функцию, которую Вы используете. Большинство библиотек Java записано в Java, таким образом, Вы могли бы просто видеть то, в чем Вы нуждаетесь там.
Принятие @Kenster было правильным, и это - работа системы, Вам, вероятно, придется просто выполнить итерации по портам, пытающимся связать с каждым или протестировать его. Хотя это немного болезненно, это не должны быть больше, чем несколько строк кода.