macGigi (Normal User)
Newbie
Messaggi: 2
Iscritto: 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 |
import java.io.IOException; public interface ProtocolHandler { public void handle() ; }
|
Codice sorgente - presumibilmente Java |
import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; import java.net.Socket; import java.util.Scanner; public class ChatHandler implements ProtocolHandler { private byte status; public ChatHandler (Socket s, byte status ) { this.socket = s; this.status = status; } @Override // ha bisogno di una socket come parametro e ha bisogno dello stato public void handle() { while(status != 0) { switch(status) { case 1: // client scrive System. out. print("Scrive Client: "); Scanner scriveClient = new Scanner (System. in); msg = scriveClient.nextLine(); outToServer.println(msg); // il messaggio viene mandato al server status = 4; break; case 2: // client legge Scanner leggeServer = new Scanner (socket.getInputStream()); msg2 = leggeServer.nextLine(); System. out. println("Server dice: " + msg2 ); status = 1; break; case 3: // server scrive System. out. print("Scrive Server: "); Scanner scriveServer = new Scanner (System. in); msg = scriveServer.nextLine(); outToClient.println(msg); status = 2; break; case 4: // server legge Scanner leggiClient = new Scanner(socket.getInputStream()); msg2 = leggiClient.nextLine(); System. out. println("Client dice: " + msg2 ); status = 3; break; } }}}
|
Codice sorgente - presumibilmente Java |
import java.io.IOException; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; public class Chat_ServerTCP { /** * @param args * @throws IOException */ // TODO Auto-generated method stub byte status = 3; Scanner scriveServer = new Scanner (System. in); Socket connectionSocket = welcomeSocket. accept(); Scanner leggiClient = new Scanner(connectionSocket.getInputStream()); ChatHandler c = new ChatHandler(connectionSocket, status); c.handle(); connectionSocket.close(); } }
|
Codice sorgente - presumibilmente Java |
import java.io.IOException; import java.io.PrintStream; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; public class Chat_ClientTCP { /** * @param args * @throws IOException * @throws UnknownHostException */ // TODO Auto-generated method stub byte status = 1; // creazione del canale Scanner scriveClient = new Scanner (System. in); Scanner leggeServer = new Scanner (clientSocket.getInputStream()); ChatHandler c = new ChatHandler(clientSocket, status); c.handle(); clientSocket.close(); } }
|
|