PROBLEMA Aiuto per Chat in Java

MarkS3

Nuovo Utente
29
2
Sto provando a realizzare una piccola chat in java per portarla come progetto all'esame di maturità.
La chat tramite riga di comando funziona, solo che è molto banale. Vorrei aggiungere la possibilità di inserire un nome utente, per identificare il mittente di ogni messaggio e poi una semplice interfaccia grafica.
Però i messaggi vanno crittografati, perchè la mia tesina si basa sulla sicurezza nelle chat :suicidio:
Riassumendo: la chat funziona, ho provato ad aggiungere l'inserimento del nome utente ma non funziona alla perfezione.
Questo è il codice:
Java:
import java.io.*;
import java.net.*;

public class UDPChat {
    public static int PORT=6543;
    public static void main (String[] args) {
        try {
            String name="";
            System.out.println("Inserisci il tuo nickname: ");
            InputStreamReader input=new InputStreamReader(System.in);
            BufferedReader tastiera=new BufferedReader(input);
            String Line="";
            InetAddress group=InetAddress.getByName("225.5.6.7");
            MulticastSocket s=new MulticastSocket(PORT);
            s.joinGroup(group);
            ChatListenerThread objChatListenerThread=new ChatListenerThread();
            objChatListenerThread.setDaemon(true);
            //ferma gli altri thread quando il main sta per terminare
            objChatListenerThread.start();
            System.out.println("Inserisci un messaggio: ");
            InputStreamReader converter=new InputStreamReader(System.in);
            BufferedReader in=new BufferedReader (converter);
            while(!(Line.equals("quit"))) {
                Line=in.readLine();
                name=tastiera.readLine();
                if(!(Line.equals("quit"))) {
                    DatagramPacket msg=new DatagramPacket (Line.getBytes(),Line.length(),group,PORT);
                    s.send(msg);
                    DatagramPacket nick=new DatagramPacket (name.getBytes(),name.length(),group,PORT);
                    s.send(nick);
                }
        }
        s.leaveGroup(group);
    }
    catch (Exception e) {
        e.printStackTrace();
    }
    }
}

Java:
import java.net.*;
public class ChatListenerThread extends Thread {
    public void run() {
        try {
            InetAddress group=InetAddress.getByName("225.5.6.7");
            MulticastSocket s=new MulticastSocket(UDPChat.PORT);
            s.joinGroup(group);
            while(true) {
                byte[] buf2=new byte[1000];
                byte[] buf=new byte[1000];
                DatagramPacket recmsg=new DatagramPacket (buf, buf.length);
                s.receive(recmsg);
                DatagramPacket recname=new DatagramPacket (buf2, buf2.length);
                s.receive(recname);
                System.out.println("Ricevuto -> "+new String (recname.getData()).trim()+":" + new String (recmsg.getData()).trim());
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Aiutatemi vi prego! :muro:
 
Ultima modifica da un moderatore:

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!