Quello che mi piacerebbe raggiungerea quale porta temporanea è associato InetSocketAddress java?
legano un server a una porta effimera a scopo di test unità.
Il mio problema:
Utilizzando la 1.5.0_22 JDK cerco di associare un InetSocketAddress su una porta temporanea utilizzando la porta 0 come da javadoc, ma non riesco a trovare un modo dall'oggetto indirizzo di sapere quale porta ha binded a, quindi non posso avere i miei clienti configurato di conseguenza:
InetSocketAddress address = new InetSocketAddress(0);
assertThat(address.isUnresolved(), is(false));
assertThat(address.getPort(), is(0));
potrei non capire la frase javadoc correttamente:
Un valore di porta valido è compreso tra 0 e 65535. Un numero di porta pari a zero corrisponderà a consentendo al sistema di rilevare una porta temporanea in un'operazione di bind.
Ma il controllo del porto anche dopo aver mio server ascoltare il socket (sto assumendo il legame era accaduto allora) non ritorna niente altro, ma 0 (di seguito utilizza la libreria 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));
Utilizzo di nmap Non vedo nemmeno una porta collegata, quindi presumo che la mia comprensione non sia corretta. Qualsiasi aiuto?
nmap funziona dal "fuori" ed è soggetto a firewall e quant'altro. Per controllare i binding delle porte sulla stessa macchina, usa invece "netstat", che interrogherà direttamente lo stack TCP, invece di poking e pungolo. –