(java) Aiuto con chat in java

Mr. Smith

Nuovo Utente
9 Ott 2006
1
1
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:
 
  • Like
Reactions: ottofonsuppost
Discussioni simili
Autore Titolo Forum Risposte Data
Sevenjeak [Java] aiuto espressioni regolari, con caratteri speciali Java 2
M AIUTO ESERCIZIO JAVA Javascript 1
F Aiuto java script Javascript 2
K [Java] aiuto switch case Java 1
andreasuriani Aiuto script java Ajax 1
S Aiuto per 2 codifiche java Java 5
Sevenjeak [Java] Aiuto metodo trova successivo Java 0
checcox87 lista eccezioni java (era: urgente aiuto) Java 2
A Aiuto!!!!Java Base Javascript 1
S Aiuto Java Package Java 4
M Aiuto Su Scroller Java Please! Javascript 1
F NetBeans problema creazione progetto Java Windows e Software 0
Z [java] bufferizzare stream audio da mic Java 1
L java + Api di google Javascript 1
A [Cerchiamo] [Retribuito/a] "Java Solution Architect" Offerte e Richieste di Lavoro e/o Collaborazione 1
F Script java elenco alfabetico non funziona Javascript 3
C Serializzazione in java Java 1
M Ripasso Java Offerte e Richieste di Lavoro e/o Collaborazione 0
F [OFFRO - RETRIBUITO] Sviluppatori JAVA Offerte e Richieste di Lavoro e/o Collaborazione 0
L leggere RGB di un pixel dello schermo in java Java 1
I Creazione programmino JAVA Offerte e Richieste di Lavoro e/o Collaborazione 0
T [Java] tipi generici con esempio pratico Java 1
J File audio in java Java 0
V [JAVA] come integrare un software scritto in java su una pagina web? Java 4
C Java client / server Java 0
F [OFFRO][RETRIBUITO] PROGRAMMATORE JAVA Offerte e Richieste di Lavoro e/o Collaborazione 0
C [Java] testare un metodo con Junit Java 1
A [Java] caricare un url esterno senza utilizzo di iframe Java 0
S [OFFRO] Debug delle tue applicazioni Java Offerte e Richieste di Lavoro e/o Collaborazione 1
L [Java] Aggiungere elementi ad array JSON Java 0
B [Java] Paginazione in risposta HTTP Java 0
A [Java]Date diminuite di un giorno su db MySQL Java 0
P [Java] limite destro di un JFrame Java 5
D [Java] far partire JProgressBar all'apertura di un JFrame Java 1
N [java con eclipse]metodo ricorsivo che accetta in ingresso un char e restituisce un int Java 0
A Verifica validità data in Java Java 2
L [Java] Errore json conversione Java 0
Drago73 [Java] leggere/scrivere txt server Java 0
M [Javascript] Java card Java 0
serena.cerutti posizioni aperte: PhP, Java, .Net Offerte e Richieste di Lavoro e/o Collaborazione 0
N [Java]problema jasper report dopo compilazione file .jar Java 0
N [Java] Piccolo jform per calcolo totale da 2 campi i double Java 0
N [Java] jbutton con funzioni Java 2
M [java] esercizio lunghezza array di stringhe Java 0
A [java] problema esercizio Java 0
filograndipad2 Esempi chiari e completi sul funzionamento degli eventi in Java Java 1
Raziel84 [Java] Combinazione elementi matrice Java 0
A [java] problema esercizio array Java 5
L da php a popup java PHP 2
W Piccolo sistema per gestire alcune periferiche, Java o altro linguaggio? Java 8

Discussioni simili