Чего бы я хотел достичь
привязать сервер к временному порту для модульного тестирования.
Моя проблема:
Используя JDK 1.5.0_22, я пытаюсь привязать InetSocketAddress к временному порту, используя порт 0 согласно javadoc, но я не могу найти способ из объекта адреса узнать, к какому порту он привязан, поэтому я не могу мои клиенты настроены соответственно:
InetSocketAddress address = new InetSocketAddress(0);
assertThat(address.isUnresolved(), is(false));
assertThat(address.getPort(), is(0));
Возможно, я не правильно понял предложение javadoc:
Допустимое значение порта - от 0 до 65535. Номер порта с нулем будет
позвольте системе выбрать эфемерный порт в операции связывания.
Но проверка порта даже после того, как мой сервер прослушивает сокет (я предполагаю, что связывание произошло тогда), не возвращает ничего, кроме 0 (в следующем примере используется библиотека http://simpleweb.sourceforge.net/):
Container httpServer = new Container() {
public void handle(Request req, Response resp) {
}
};
SocketConnection connection = new SocketConnection(httpServer);
InetSocketAddress address = new InetSocketAddress(0);
connection.connect(address);
assertThat(address.isUnresolved(), is(false));
assertThat(address.getPort(), is(0));
Используя nmap, я даже не вижу связанный порт, поэтому я предполагаю, что мое понимание неверно. Любая помощь?