CHAT UDP - Gabriele-Chiericozzi-Peano-5A/chatUDP GitHub Wiki

Prima di tutto bisogna creare la connessione tra client-server, tutto questo si fa creando un socket: DatagramSocket nomeCheSiVuoleDareAlSocket = new DatagramSocket();

Il Socket è un canale di comunicazione che permette di inviare e ricevere dati tra due o più host. Questo è possibile attraverso una coppia (IP,PORTA).

Nel server, il Socket, serve per tenersi in ascolto di eventuali messaggi da parte di un Client e bisogna passargli la porta su cui rimanere in ascolto, DatagramSocket nomeCheSiVuoleDareAlSocket = new DatagramSocket(porta); Nel client, invece, si può omettere la porta, DatagramSocket nomeCheSiVuoleDareAlSocket = new DatagramSocket();

Successivamente bisogna creare un pacchetto: DatagramPacket nomeCheSiVuoleDareAlPacket = new DatagramPacket(), che verrà mandato dal Client. Nel DatagramPacket bisogna passargli come parametri la porta, l'indirizzo, il buffer e la sua lunghezza. Per inviare il pacchetto si usa Socket.send(...);

Dopo l'invio del pacchetto si deve fare un Socket.receive(...), per mettere al clinet di rimanere in ascolto della risposta del server. Dopo di ciò la connessione viene interrotta e il socket si chiude.


Modifica del punto 1: Inizialmente ho dovuto capire in quale classe aggiungere il codice. Dopo varie prove, ho capito, grazie ad un'esempio del professore, che la classe da modificare era quella dell'invio del messaggio, SendUSerInputoServer. Per prima cosa si è dovuta aggiungere una variabile user_name, di tipo stringa, per permettere all'utente di inserire il suo personale nome utente, con un System.out, assieme ad un System.in, per prelevare il valore inserito e poi visualizzarlo con il messaggio, sempre con un System.out. Per separare i due output, ho aggiunto ":". L'output finale verrà, user_name: messaggio inserito.


Modifica del punto 2: Prima di tutto c'è stato bisogno di creare un'altra classe per l'interfaccia, poi unito questa con il main. abbiamo aggiunto tutti gli oggetti e provato a unire il tutto, ma senza un risultato finale adeguato, quindi ho preso spunto da un mio compagno e aggiunto le cose che mancavano, come un menù e il pannello scorrevole. La mia difficoltà è stata quella di non saper cosa scrivere dentro gli ActionListener, quindi ho gurdato, sempre da quel mio compagno, come si facesse.


Modifica del punto 3: Per capire come far mandare gli ultimi 10 messaggi al server ad un client che si è appena collegato, ho dovuto leggere il codice un paio di volte e trovare il punto specifico da modificare. Ho creato un ArrayList, ArrayList nomeDellaVariabile = new ArrayList(); per salvare i messaggi inviati in e tramite un for(int i = 0; nomeDellaVariabile <=10; i++){e dentro le parentesi il codice di invio dei messaggi.} il server manda gli ultimi 10 messaggi al nuovo client. Come condizione c'è il minore di 10, perché non è detto che i messaggi siano per forza 10 o più, quindi nel caso fossero di meno, li manda tutti.

⚠️ **GitHub.com Fallback** ⚠️