Chat Client/Server

di il
1 risposte

Chat Client/Server

Salve, ho in progetto una chat client/server che utilizza una libreria protocollo scritta a parte in un altro package.
Quando avvio sia il server che il client, appare un'interfaccia. Ecco, quando clicco sul bottone connetti e inserisco il nickname invece che aggiungere il nick alla lista, mi rimanda il metodo unknown del client. Non capisco dove sia il problema.

Chat Client ->
[color=#00BFBF]public View(Sender out) {
        msgOut = new JTextField(80);
        send = new JButton("" + '\u2936');
        JPanel panel = new JPanel();
        panel.add(msgOut);
        panel.add(send);
        add(panel, BorderLayout.SOUTH);
        JPanel north = new JPanel();

        connect = new JButton("Connetti");
        connect.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                name = JOptionPane.showInputDialog("Inserire il nick").trim();
                if (name != null && !name.equals("")) {
                    join();
                }

            }
        });
        north.add(connect);
        add(north, BorderLayout.NORTH);
        msgListModel = new DefaultListModel<>();
        usersListModel = new DefaultListModel<>();
        this.out = out;
        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                quit();
            }
        });
        msgList = new JList(msgListModel);
        usersList = new JList(usersListModel);
        add(new JScrollPane(msgList));
        add(new JScrollPane(usersList), BorderLayout.EAST);
        send.setEnabled(false);
        msgOut.setEnabled(false);
        send.addActionListener(new ActionListener() {

           
    @Override
    public void join() {
        out.send(Commands.Join + Protocol.commandSeparator + name);
    }

    @Override
    public void unknown() {
        JOptionPane.showMessageDialog(this, "Il server non ha riconosciuto l'ultimo comando inviato");
    }

    @Override
    public void nickJoined(String nick) {
        msgListModel.addElement(nick + " è entrato");
        if (!nick.equals(name)) {
            usersListModel.addElement(nick);
        }else{
            setTitle(name);
            newNick.setEnabled(true);
            privateMsg.setEnabled(true);
            send.setEnabled(true);
        }
        msgList.requestFocus();
    }[/color]

Chat Server ->
[color=#00BF00]public Server(List<Sender> senders, List<String> nicks, Sender out) {
        this.senders = senders;
        this.nicks = nicks;
        this.out = out;
    }

    @Override
    public void join() { 
        throw new RuntimeException("Metodo client usato da server");
    }

    @Override
    public void join(String parameter) {
        if(!nicks.contains(parameter)){
            senders.add(out);
            nicks.add(parameter);
            nickJoined(parameter);
        } else {
            out.send(Commands.Error+Protocol.commandSeparator+Errors.DuplicateNick);
        }
    }

    @Override
    public void unknown() {
        out.send("Il server non ha riconosciuto l'ultimo comando inviato");
    }

    @Override
    public void usersList(String[] users) {
        for (int i = 0; i < users.length; i++) {
            out.send(users[i]);
        }
    }

    @Override
    public void nickJoined(String nick) {
        out.send(nick + " è entrato");
    }
}[/color]

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte