Scrivere un programma client-server che usi i socket TCP tale che:
Il server riceve sul socket, una coppia di interi
.. E restituisce al client la somma..
.. Che il client stampa a video.
Modificare il programma in modo che il server accetti diverse coppie di interi dallo stesso client, che aspetta di ricevere il risultato di quella
precedente prima di sottomettere la nuova coppia
Io devo attuare la modifica del programma ma non riesco a farlo.
Codice del client:
codice:
public class ClientEsercizio1 {
static Logger logger = Logger.getLogger("global");
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost",9000);
ObjectOutputStream outStream = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream inStream = new ObjectInputStream(socket.getInputStream());
Scanner in = new Scanner(System.in);
int[] xy = new int[2];
while(true) {
xy[0] = in.nextInt();
xy[1] = in.nextInt();
outStream.writeObject(xy);
logger.info("Coppia inviata");
System.out.println(inStream.readObject());
}
} catch (EOFException e) {
logger.severe("Problemi con la connessione:" + e.getMessage());
e.printStackTrace();
} catch (Throwable t) {
logger.severe("Lanciata Throwable:" + t.getMessage());
t.printStackTrace();
}
}
}
Codice del server:
codice:
public class ServerEsercizio1 {
static Logger logger = Logger.getLogger("global");
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(9000);
logger.info("Socket instanziato, accetto connessioni...");
Socket socket = serverSocket.accept();
logger.info("Accettata una connessione... attendo comandi.");
ObjectOutputStream outStream = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream inStream = new ObjectInputStream(socket.getInputStream());
int[] xy;
while(true) {
xy = (int[]) inStream.readObject();
logger.info("Ricevuta la coppia di interi");
int somma = xy[0] + xy[1];
outStream.writeObject(somma);
}
} catch (EOFException e) {
logger.severe("Problemi con la connessione:" + e.getMessage());
e.printStackTrace();
} catch (Throwable t) {
logger.severe("Lancatia Throwable:" + t.getMessage());
t.printStackTrace();
}
}
}
Praticamente quando prendo in input da tastiera i 2 numeri, non mi dà il risultato ma continua ad aspettare input da tastiera all'infinito. Come posso risolvere? Grazie mille!