PDA

View Full Version : [Java] Socket e timeout


Soel
17-02-2009, 18:48
Salve a tutti, ho un piccolo problema con un programma che svolge la funzione di client.
Ho un semplice codice come questo:
try {
Socket socket = new Socket("localhost", 8000);
... //altre istruzioni
} catch (Exception e) { System.err.println(e); }
Ho provato a farlo connettere ad un server inesistente, in modo da verificare quale tipo di eccezione venisse sollevato. Tuttavia ho notato che se lancio il programma da Eclipse l'eccezione viene sollevata quasi istantaneamente, mentre se lo esporto in formato jar e poi lo lancio da terminale (uso Mac OSX 10.4.10) viene sollevata solo dopo circa un minuto di attesa. Come posso fare per obbligare il programma a lanciare l'eccezione entro un intervallo di tempo ben definito?
Grazie anticipatamente per la risposta.

cionci
17-02-2009, 18:50
Ma a quale eccezione specifica ti riferisci ? Ed in quale caso viene sollevata ?

Soel
17-02-2009, 19:35
Chiedo scusa, ritoccando il post ho inavvertitamente cancellato la riga. Mi riferisco all'eccezione che viene sollevata quando tento di connettermi ad un server inesistente. In Eclipse viene sollevata subito, mentre da terminale il programma mantiene il tentativo di connessione per circa un minuto prima di sollevarla.
Ora correggo anche il post iniziale.

PGI-Bis
17-02-2009, 20:29
C'è un metodo connect dei Socket che accetta anche un periodo di timeout, prova a usare quello.

Soel
18-02-2009, 17:48
Ho notato che il metodo connect, invece che una stringa per l'host e un intero per la porta, chiede in input un oggetto di tipo SocketAddress. Come faccio ad ottenere il SocketAddress relativo a una determinata coppia di valori host/porta?

cionci
18-02-2009, 17:50
http://java.sun.com/javase/6/docs/api/java/net/InetSocketAddress.html

Soel
18-02-2009, 18:10
Grazie mille!