ChatUDP - Gabriele-Farinella-Peano-5A/chatUDP GitHub Wiki

Funzionamento protocollo UDP tra Client e Server

L' UDP è un protocollo che utilizza i datagram, ossia pezzi di pacchetti segmentati, che contengono un indirizzo IP, un messaggio e una porta: la combinazione tra IP e porta è denominata Socket, essa permette l' identificazione di un Host, dispositivo destinatario e di una porta logica che offre un tipo di servizio specifico in base al numero, le porte vanno da 0 a 65535.

Per creare una chat UDP ho bisogno di due progetti separati: uno per il server e uno per il client, ognuno composto da 2 o più classi e ho bisogno di implementare una GUI per visualizzare il client.

Il protocollo UDP è un protocollo non affidabile perchè:

  • non garantisce l'avvenuta consegna dei pacchetti inviati.
  • non garantisce la consegna dei dati in ordine in cui sono stati inviati.

Esercitazioni

Esercitazione N.1 (USERNAME)

Per eseguire l'esercitazione 1 che chiedeva di fare inserire un username dall'utente e mostrarlo nei messaggi che invia il server ho inserito un System.out.println che dice all'utente di inserire un nickname e tramite uno scanner acquisisco la stringa che l'utente inserisce.

Poi nel "do" ho concatenato l'username con il messaggio che l'utente inserisce grazie al comando:

messaggio = username.concat(": " + messaggio);

Esercitazione N.2 (INTERFACCIA GRAFICA)

L'interfaccia è composta da un MenuBar che permette di applicare l'esercizio precedente e quindi di inserire l'username anche nell'interfaccia grafica, da un TextArea che permette di visualizzare la chat, da un TextField che permette di scrivere i messaggi da inviare nella chat e da un Button che permette di inviare i messaggi.

L'area per inserire l'username è stata automatizzata grazie a JOptionPane che permette di acquisire l'input immesso da tastiera.

Il TextField invece ha un FocusListener che permette di cancellare i contenuto del messaggio dal TextField una volta inviato.

Esercitazione N.3 (VISUALIZZAZIONE ULTIMI 10 MESSAGGI)

Nell'esercitazione che chiedeva di far visualizzare gli ultimo 10 messaggi inviati ad un nuovo Client che si connette ho usato una LinkedList che salva gli ultimi 10 messaggi inviati e li stampa quando un nuovo client si collega.

Grazie alla LinkedList se superiamo i 10 messaggi inviati viene cancellato il primo messaggio che era nella lista e viene inserito l'ultimo inviato cosicchè il client che si collega veda sempre e comunque gli ultimi 10 messaggi inviati