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:
Aiutatemi vi prego! :muro:
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();
}
}
}
Ultima modifica da un moderatore: