Pagina 1 di 1

[Risolto] Java problemi con le Socket

Inviato: martedì 4 marzo 2008, 15:16
da ^JAVA^
Ciao raga sto lavorando ad un programma per lo scambio di file da remoto (e non da locale)
Questo è il client:
public static void main(String[] args) throws IOException {
Socket s=new Socket("79.3.212.xxx",2000);
System.out.println(s.getRemoteSocketAddress());
DataInputStream dis=new DataInputStream(s.getInputStream());
System.out.println(dis.readUTF());
dis.close();
s.close();
}
E questo il server:
public static void main(String[] args) throws IOException {
ServerSocket ss=new ServerSocket(2000);
Socket s=ss.accept();
DataOutputStream dos=new DataOutputStream(s.getOutputStream());
dos.writeUTF("Ciao\n");
ss.close();
s.close();
dos.close();
}
Ma quando eseguo il client mi da errore: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method).
Potete dirmi dove sbaglio???

Re: Java problemi con le Socket

Inviato: martedì 4 marzo 2008, 15:56
da boymask2000
se la xxx in

Codice: Seleziona tutto

Socket s=new Socket("79.3.212.xxx",2000);
è davvero tale, allora sta cercando di risolvere l'indirizzo tramite DNS. Se invece al posto di xxx c'è un numero e quindi l'indirizzo è velido, controllerei se ci sono firewall in mezzo

Ciao

Re: Java problemi con le Socket

Inviato: martedì 4 marzo 2008, 16:01
da ^JAVA^
In "Socket s=new Socket("79.3.212.xxx",2000);" le "xxx" le ho messe per non visualizzare tutto l' IP.

Re: Java problemi con le Socket

Inviato: mercoledì 5 marzo 2008, 10:00
da jimmy.77
così a colpo d'occhio direi che il programma che ti fa "server" si avvia e si conclude, chiudendo il socket. Quando ti colleghi con il client di dà l'eccezione perché effettivamente non esiste più il socket al quale collegarsi.
Dovresti trovare il modo di far restare il "server" in ascolto (...che è quello che deve fare un server :D), o con un thread o un ciclo while con l'aggiunta di una clausola di uscita dal ciclo.

Ciao, J.

Re: Java problemi con le Socket

Inviato: mercoledì 5 marzo 2008, 12:13
da boymask2000
Il metodo accept() è bloccante, per cui resta in attesa almeno della prima connessione.

IMHO

Saluti

Re: Java problemi con le Socket

Inviato: mercoledì 5 marzo 2008, 13:47
da jimmy.77
boymask2000 ha scritto: Il metodo accept() è bloccante, per cui resta in attesa almeno della prima connessione.
mmmh, hai ragione (ignoravo completamente questa cosa!).
A questo punto quoto in pieno quello che hai proposto nel tuo post precedente: quasi sicuramente è un problema di "visibilità" tra le due macchine (IP errato, firewall, proxy, reverse proxy, e chi più ne ha... più ne metta).

J.

Re: Java problemi con le Socket

Inviato: mercoledì 5 marzo 2008, 14:05
da Massimo S.
Per fare delle prove, dal pc client fai

Codice: Seleziona tutto

ping 79.3.212.xxx
per vedere se il pc server è raggiungibile

e poi

Codice: Seleziona tutto

telnet 79.3.212.xxx  2000
per vedere se il client si connette alla porta 2000 del server.

(Ovviamente sostituisci xxx con l'indirizzo vero)

Re: Java problemi con le Socket

Inviato: mercoledì 5 marzo 2008, 14:36
da daemon_nio
Io ti direi di provare con 127.0.0.1 e lanciare il client e il server dalla stessa macchina.

Ho avuto problemi simili... addirittura non mi riuscivo a connettermi alla mia stessa macchina utilizzando al posto di 127.0.0.1 localhost, il che dovrebbero essere perfettamente identici. (ed ero su linux :D)

Re: Java problemi con le Socket

Inviato: mercoledì 5 marzo 2008, 16:25
da ^JAVA^
Questa mattina ho provato ad avviare il client e il server e inspiegabilmente funzionano.....
Comunque grazie!!!!!!!!!!!!!!!