Visualizzazione dei risultati da 1 a 10 su 10

Visualizzazione discussione

  1. #3
    Ciao scusa se ho dovuto far spostare la discussione . Posto i pezzi di codice più importanti:
    Lato Server (Thread):

    codice:
         public void run()
         {
              
             try {
                 //ottiene gli stream di I/O dalla socket
                 ois = new ObjectInputStream(socket.getInputStream());
                 oos = new ObjectOutputStream(socket.getOutputStream());
                 cont=0;
                 while(!socket.isClosed()){
                         cont++;
                           // legge la richiesta
                         richiesta = (Request)ois.readObject();
    //                     System.out.println("SERVER: Ho ricevuto la richiesta n°"+cont+", REQUEST: "+richiesta.getRequest());                         this.sleep(5);
                        manageRequest(richiesta,oos);
                 }
                    
                 ois.close();
                 oos.close();
                 socket.close();
                    
                } catch (Exception e) {
                    System.out.println(e.getMessage());
                }    
         } // run()
         
        
        
        private void manageRequest(final Request request,final ObjectOutputStream oos) {
                    switch (request.getRequest()) {
                        case "search":
                        {
                            System.out.println("SERVER THREAD RICEVUTO SEARCH.");
                            ListMatch temp=server.getMatchs();
                            if(temp==null)
                                temp=m; 
                            try {
                                System.out.println("SERVER: Size---> "+temp.size());
                                Answer answerTemp=new Answer(LIST,temp,cont);
                                oos.writeObject(answerTemp);
                                oos.flush();
                                //System.out.println("HO INVIATO la risposta "+cont+" la size list è "+((ListMatch)answer.getContent()).size());
                            } catch (IOException e) {
                                System.out.println("SERVER THREAD, ERRORE SCRITTURA LISTA PARTITE, SEARCH: "+e.getMessage());
                            }
                            break;
                        }
                    }

    Lato CLIENT (Thread):

    codice:
                   public void run() {
                try {
                    if(client.getInputStream()==null||client.getOutputStream()==null)
                        System.out.println("ERRORE MANAGER COMUNICATION 1");
                    oos = new ObjectOutputStream(client.getOutputStream());
                    ois = new ObjectInputStream(client.getInputStream());
                } catch (IOException e1) {
                    System.out.println(e1.getMessage());
                }
                try {
                    if(ois==null||oos==null)
                        System.out.println("ERRORE MANAGER COMUNICATION 2");
                    System.out.println("Client ready.\n");
                    
                    while (!(requestUser.getRequest().equals("close"))) {
                            oos.writeObject(requestUser);
                            oos.flush();
                            try {
                                Thread.sleep(20);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                            // legge la richiesta
                            Answer temp=(Answer)ois.readObject();
                            ListMatch contentList=(ListMatch)temp.getContent();
                            System.out.println("ID:"+temp.getId()+" ANS:"+temp.getAnswer()+" CONT:"+contentList.toString());
                            String content=temp.getAnswer();
                            switch (content) {
                                case "list":
                                    System.out.println("CLIENT THREAD: LA RISPOSTA DEL SERVER CON ID:"+temp.getId()+"E LA SIZE E' "+((ListMatch)temp.getContent()).size());
                                    c.setAnswer(temp);
                                    requestUser=c.getRequest();
                                    break;
                                case "ok":
                                    break;
                                default:
                                    requestUser=new Request("close", null);
                                    System.out.println("CLIENT THREAD: STO CHIUDENDO LA CONNESSIONE");
                                    break;
                            }
                            
                    }
                    oos.writeObject(requestUser);
                    oos.flush();
                    
                    ois.close();
                    oos.close();
                    client.close();
                } catch (IOException | ClassNotFoundException e) {
                    System.out.println(e.getMessage());
                }
        }

    La classe ListMatch estende ArrayList<Match> ed implementa Serializzable
    La classe Match per semplicità ora è composta solo da una String che rappresenta il nome della partita
    La classe Answer (Request è simile) contiene questi parametri con relativi get e set:


    codice:
                   public String answer;
    private int id;
    private Object content;
    Ultima modifica di LeleFT; 12-01-2015 a 13:39 Motivo: Aggiunti i tag CODE

Tag per questa discussione

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.