Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - chat hal duplex
Forum - Java - chat hal duplex

Avatar
macGigi (Normal User)
Newbie


Messaggi: 2
Iscritto: 29/10/2013

Segnala al moderatore
Postato alle 23:37
Martedì, 29/10/2013
Salve a tutti, vi scrivo perché ho un problema: ho realizzato una chat half duplex utilizzando il protocollo TCP, creando un main per il client e uno per il server .
Ora dovrei complicare l'esercizio in modo da scrivere il codice di gestione del protocollo applicativo in un metodo di una classe .
Dopo devo individuare le variabili di istanza da prevedere nella classe e devo scrivere l’opportuno costruttore per inizializzarla. La classe potrebbe essere una classe che implementa una generica interfaccia.
Ho provato a farlo ma mi da problemi nella classe ChatHandler , qualcuno mi può dare una mano ? grazie

Codice sorgente - presumibilmente Java

  1. import java.io.IOException;
  2.  
  3. public interface ProtocolHandler {
  4.        
  5.         public void handle() ;
  6.  
  7. }



Codice sorgente - presumibilmente Java

  1. import java.io.IOException;
  2. import java.io.OutputStream;
  3. import java.io.PrintStream;
  4. import java.net.Socket;
  5. import java.util.Scanner;
  6.  
  7. public class ChatHandler implements ProtocolHandler {
  8.        
  9.         private Socket socket;
  10.         private byte status;
  11.        
  12.         public ChatHandler(Socket s, byte status) {
  13.                 this.socket = s;
  14.                 this.status = status;
  15.         }
  16.  
  17.        
  18.         @Override
  19.         // ha bisogno di una socket come parametro e ha bisogno dello stato
  20.         public void handle()  {
  21.                 while(status != 0) {
  22.                 String msg;
  23.                         String msg2;
  24.                         switch(status) {
  25.                         case 1: // client scrive
  26.                                 System.out.print("Scrive Client: ");
  27.                                 Scanner scriveClient = new Scanner(System.in);
  28.                                 msg = scriveClient.nextLine(); 
  29.                                 PrintStream outToServer = new PrintStream(socket.getOutputStream());
  30.                                 outToServer.println(msg);       // il messaggio viene mandato al server
  31.                                 status = 4;
  32.                         break;
  33.                        
  34.                         case 2: // client legge
  35.                                 Scanner leggeServer = new Scanner (socket.getInputStream());
  36.                                 msg2 = leggeServer.nextLine();
  37.                                 System.out.println("Server dice: " + msg2);
  38.                                 status = 1;
  39.                                 break;
  40.                        
  41.                         case 3: // server scrive
  42.                         System.out.print("Scrive Server: ");
  43.                         Scanner scriveServer = new Scanner(System.in);
  44.                         msg = scriveServer.nextLine(); 
  45.                         PrintStream outToClient = new PrintStream(socket.getOutputStream());
  46.                         outToClient.println(msg);      
  47.                     status = 2;
  48.                     break;
  49.                    
  50.                 case 4: // server legge
  51.                         Scanner leggiClient = new Scanner(socket.getInputStream());
  52.                         msg2 = leggiClient.nextLine();
  53.                         System.out.println("Client dice: " + msg2);
  54.                         status = 3;
  55.                         break;
  56.                 }
  57.                
  58.                
  59.            
  60.  
  61.                 }}}



Codice sorgente - presumibilmente Java

  1. import java.io.IOException;
  2. import java.io.PrintStream;
  3. import java.net.ServerSocket;
  4. import java.net.Socket;
  5. import java.util.Scanner;
  6.  
  7. public class Chat_ServerTCP {
  8.  
  9.         /**
  10.          * @param args
  11.          * @throws IOException
  12.          */
  13.         public static void main(String[] args) throws IOException {
  14.                 // TODO Auto-generated method stub
  15.                
  16.                 byte status = 3;
  17.                
  18.                 ServerSocket welcomeSocket = new ServerSocket(6789);
  19.        
  20.                 Scanner scriveServer = new Scanner(System.in);
  21.                
  22.                 Socket connectionSocket = welcomeSocket.accept();
  23.        
  24.                 Scanner leggiClient = new Scanner(connectionSocket.getInputStream());
  25.                
  26.                 PrintStream outToClient = new PrintStream(connectionSocket.getOutputStream());
  27.        
  28.                 ChatHandler c = new ChatHandler(connectionSocket, status);
  29.                 c.handle();
  30.                
  31.                 connectionSocket.close();
  32.         }
  33.  
  34. }



Codice sorgente - presumibilmente Java

  1. import java.io.IOException;
  2. import java.io.PrintStream;
  3. import java.net.Socket;
  4. import java.net.UnknownHostException;
  5. import java.util.Scanner;
  6.  
  7. public class Chat_ClientTCP {
  8.  
  9.         /**
  10.          * @param args
  11.          * @throws IOException
  12.          * @throws UnknownHostException
  13.          */
  14.         public static void main(String[] args) throws UnknownHostException, IOException {
  15.                 // TODO Auto-generated method stub
  16.                
  17.                 String msg, msg2;
  18.        
  19.         byte status = 1;
  20.        
  21.         // creazione del canale
  22.         Socket clientSocket = new Socket("127.0.0.1", 6789);
  23.        
  24.         Scanner scriveClient = new Scanner(System.in);
  25.        
  26.         Scanner leggeServer = new Scanner (clientSocket.getInputStream());
  27.        
  28.         PrintStream outToServer = new PrintStream(clientSocket.getOutputStream());
  29.                
  30.         ChatHandler c = new ChatHandler(clientSocket, status);
  31.         c.handle();
  32.  
  33.         clientSocket.close();
  34.         }
  35.  
  36. }


PM Quote