(java) Aiuto con chat in java

Discussione in 'Java' iniziata da Mr. Smith, 9 Ottobre 2006.

  1. Mr. Smith

    Mr. Smith Nuovo Utente

    Registrato:
    9 Ottobre 2006
    Messaggi:
    1
    Mi Piace Ricevuti:
    1
    Punteggio:
    0
    Ciao a tutti sono nuovo del forum e spero di trovare qualcuno che mi aiuti a fare una cosa semplice, ma che mi sta facendo impazzire (soprattutto perchè non sono tanto pratico con java)...in particolare dovrei sviluppare una semplice chat in java (multithread), niente di particolarmente elaborato e performante, è per un esame, e sono arrivato al punto in cui non devo fare più l'eco dei messaggi ma mandare il mess di un client a tutti quelli collegati al momento..posto il codice fatto finora:
    Codice:
    ------------SERVER-----------
    
    import java.io.*;
    import java.net.*;
    import java.util.*;
    
    
    public class ChatServer {
    
        private static final int serverPort = 7890;
        public static Vector n_utenti = new Vector();
        public int n;
        public Connessione s;
    
        public ChatServer() {
        }
    
        public static void main(String args[]) {
            try {
                ServerSocket server = new ServerSocket(serverPort);
                System.out.println("Server Attivo");
                while (true) {
                    Socket clientSocket = server.accept();
                   Connessione c = new Connessione(clientSocket /*, u*/);
                   n_utenti.add(c);
                   System.out.println(n_utenti.size());
                }
            } catch (IOException e) {
                System.out.println("Listen:" + e.getMessage());
            }
        }
    }
    
    class Connessione extends Thread {
    
        BufferedReader in;
        PrintWriter out;
        Socket clientSocket;
        int n;
    
        DataOutputStream o;
    
        boolean connesso = true;
    
        public Connessione(Socket aClientSocket /*, Utente u*/) {
    
             n = ChatServer.n_utenti.size();
    
            try {
    
                this.clientSocket = aClientSocket;
    
                System.out.println("connessione ricevuta da: " +
                                   clientSocket.getInetAddress());
                in = new BufferedReader(new InputStreamReader(clientSocket.
                        getInputStream()));
                out = new PrintWriter(clientSocket.getOutputStream(), true);
                this.start();
    
            } catch (IOException e) {
                System.out.println("Connessione:" + e.getMessage());
            }
        }
    
        public void run() {
    
            Socket address;
    
            try { // an echo server
                // echo client input
                out.println("Hello! Enter BYE to Exit");
    
                boolean done = false;
                while (!done) {
                    String line = in.readLine();
                    if (line == null) {
                        done = true; //Loop infinito in cui scrivo qualcosa e me lo rispedisco, finch� nn scrivo "Bye"
                    }
    
                    else if (line.trim().equals("BYE")) {
                        done = true;
    
                    }
    
                    else {
                        for (int i = 0; i < ChatServer.n_utenti.size();i++ ) {
                            try {
    QUI DOVREI INSERIRE IL METODO CHE MANDA MESS IN BROADCAST
                                 
                                out.println(line);
                                
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
    
                        System.out.println(ChatServer.n_utenti.size());
                        out.println(line);
    
                    }
    
                }
    
                System.out.println("il Client " + clientSocket.getInetAddress() +
                                   " si � disconnesso");
    
            } catch (EOFException e) {
                System.out.println("EOF:" + e.getMessage());
            } catch (IOException e) {
                System.out.println("IO:" + e.getMessage());
            } finally {
                try {
                    clientSocket.close();
                } catch (IOException e) {}
            }
        }
    }
    
    
    
    -------------CLIENT-------------
    
    import java.net.*;
    import java.io.*;
    
    
    public class ChatClient {
    
    
        /** Creates a new instance of EchoClient */
        public ChatClient() {
        }
    
        public static void main(String args[]) {
            // arguments supply message and hostname of destination
    
            Socket s = null;
    
            try {
                String SERVER = "localHost";
                int serverPort = 7890;
    
                s = new Socket(); //si crea una socket NN bloccante
                s.connect(new InetSocketAddress(SERVER, serverPort), 1000); //Dopo 1000 ms esce, altrimenti nresterebbe bloccato
    
                BufferedReader s_in = new BufferedReader (new InputStreamReader(s.getInputStream())); //verso server
                PrintWriter s_out = new PrintWriter(s.getOutputStream(),true);
    
                BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
    
                String data = s_in.readLine();
                System.out.println(data);
    
                while (true) {
                    String input = console.readLine();
    
                    s_out.println("Echo: " +input);
                    data = s_in.readLine();
    
                    System.out.println(data);
    
                    if (input.trim().equals("BYE")) {
                        System.exit(0);
    
                } }
    
            } catch (UnknownHostException e) {
                System.out.println("Sock:" + e.getMessage());
            } catch (EOFException e) {
                System.out.println("EOF:" + e.getMessage());
            } catch (IOException e) {
                System.out.println("IO:" + e.getMessage());
            }
    
            finally {
                if (s != null) {
                    try {
                        s.close();
                    } catch (IOException e) { 
                        System.out.println("close:" + e.getMessage());
                    }
                }
            }
        }
    }
    
    Accetto suggerimenti..poi dovrei inserire altre funzionalità, ma casomai posterò più avanti, per il momento mi interessa questo, sperando che qualcuno mi aiuti....

    Grazie in anticipo ciao ciao :beer:
     
    A ottofonsuppost piace questo elemento.
Sto caricando...

Condividi questa Pagina