Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Socket TCP

Visualizzazione discussione

  1. #1

    Socket TCP

    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!
    Ultima modifica di Aleandro23; 15-10-2017 a 10:37

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.