PDA

View Full Version : [JAVA] ServerSocket.accept che non riceve dati


_Manuel_
05-11-2009, 04:51
Salve!
Ho questo mini-client:

public class Client {

private PrintWriter out;


public Client() {
String dottedDecimalAddress = "96.255.1.16";
int port = 3456;
try {
socket = new Socket(dottedDecimalAddress , port);
out = new PrintWriter(socket.getOutputStream(), true);
} catch (IOException e) {
System.exit(-1);
}
}



public boolean send(String message)
{
out.write(message);
return true;
}

}

La creazione del socket avviene senza eccezioni.
L'invocazione della send avviene ed il messaggio inviato ha senso.
Poi ho questo miniserver:

public class Server {

public Server() {
int port = 3456;
try {
serverSocket = new ServerSocket(port);

} catch (IOException e) {
System.exit(-1);
}

Socket clientSocket = null;
try {
clientSocket = serverSocket.accept();
} catch (IOException e) {
System.exit(1);
}

try {
in = new BufferedReader(
new InputStreamReader(
clientSocket.getInputStream()));
} catch (IOException e) {
e.printStackTrace();
System.exit(1);
}

t = new ReceiverThread(this);
t.start();
}


public void receive() {
try {
while ((inputLine = in.readLine()) != null) {
// operazioni sull'input
}
} catch (NumberFormatException e) {
e.printStackTrace();
return;
} catch (IOException e) {
e.printStackTrace();
return;
}
}



public class ReceiverThread extends Thread {

private RollerServer rs;

public ReceiverThread(RollerServer rs) {
this.rs = rs;
}

public void run() {
rs.receive();
}
}

Il flusso di esecuzione arriva fino alla ricezione (mi blocco sulla readLine() ) senza problemi, ma anche dopo che la send č stata invocata, sul server non ricevo nulla.

Quale puņ essere la causa?
Grazie

_Manuel_
05-11-2009, 16:29
Ho corretto il problema sulla listen: l'indirizzo del server va' fornito in dotted notation al costruttore del socket.

Ora pero' mi blocco sulla readLine...

malocchio
08-11-2009, 16:07
Non mi sembra ci siano errori... prova a postare il codice che utilizza le due classi (il test praticamente)...

_Manuel_
10-11-2009, 22:17
Il problema e' che la readline si aspetta di trovare un \n che non trovava.
Invece di write ho utilizzato println e funziona.

malocchio
11-11-2009, 23:39
Il problema e' che la readline si aspetta di trovare un \n che non trovava.
Invece di write ho utilizzato println e funziona.

Ah quindi hai risolto...