Salve gente,
ho provato a dare uno sguardo in giro ma credo che nessuno abbia riscontrato un problema simile, quindi ho aperto un nuovo topic e vado ad enunciarvi la situazione :
sto realizzando una grande applicazione client/server come progetto di laurea, e dopo innumerevoli righe di codice mi trovo di fronte ad una situazione paradossale su di una socket. Scrivo due righe di codice, per comprenderci :
In questa specifica funzione il client invia un file da salvare sul server, e per farlo utilizza una socket nuova, diversa da quella che utilizza per la connessione;
sul server ho queste poche righe di codice per realizzare il tutto :
codice:
Socket s=new Socket(cli.getInetAddress(),8888);
BufferedReader i = new BufferedReader(new InputStreamReader(s.getInputStream()));
File f=new File("C:\\ServerInfo\\"+i.readLine());
FunzioniServer.storeOnServer(s, f);
la variabile cli contiene la socket attuale mediante cui sono connessi client e server
mentre sul client ho :
codice:
ServerSocket ss=new ServerSocket(8888);
Socket s = ss.accept();
ss.close();
PrintStream out = new PrintStream(s.getOutputStream(), true);
out.println(chooser.getSelectedFile().getName());
Funzioni.uploadFile(s, chooser.getSelectedFile());
Il problema è questo : mentre il client si ferma sulla accept ad aspettare la connessione, il server apre tranquillamente la socket (nonostante io abbia verificato che l'indirizzo verso cui va la socket è lo stesso della macchina cliente che attende la connessione) e si blocca alla penultima riga che ho postato, in attesa della readLine sul Reader.
La situazione è alquanto paradossale già posta così, lo diventa ancor di più se aggiungo che, avendo provato ad impostare la serverSocket nel server e la socket nel client il tutto funziona bene..
Spero di essere stato abbastanza chiaro, e spero che qualcuno di voi sappia spiegarmi cosa accade