Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/matbagnoletti/unicasttcpsocketchat
Applicazione Java che utilizza le socket per implementare una comunicazione TCP unicast tra Client e Server.
https://github.com/matbagnoletti/unicasttcpsocketchat
client-server java socket
Last synced: about 2 months ago
JSON representation
Applicazione Java che utilizza le socket per implementare una comunicazione TCP unicast tra Client e Server.
- Host: GitHub
- URL: https://github.com/matbagnoletti/unicasttcpsocketchat
- Owner: matbagnoletti
- License: other
- Created: 2024-02-27T14:23:21.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-04-04T05:34:11.000Z (9 months ago)
- Last Synced: 2024-04-04T06:32:53.038Z (9 months ago)
- Topics: client-server, java, socket
- Language: Java
- Homepage:
- Size: 26.4 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
UnicastTCPSocketChat
Made by @matbagnoletti
Docenti: prof.ssa @mciuchetti e prof.ssa Fioroni
Corso TPSIT a.s. 2023/2024, ITTS A. Volta (PG)
## Descrizione
Applicazione Java che utilizza le socket per implementare una comunicazione TCP unicast tra più Client e un Server.## Requisiti
- [JDK](https://www.oracle.com/it/java/technologies/downloads/) (v8 o superiore)
- [Gradle](https://gradle.org/install/) (v8.6)È possibile visualizzare le versioni già presenti sul proprio dispositivo mediante i seguenti comandi:
```
java --version
gradle --version
```## Installazione e utilizzo
1. Scaricare il file compresso del progetto
2. Estrarre il progetto
3. Eseguire il Server e il Client separatamente:
- Tramite IDE
- Tramite terminale:
1. Naviga nella root del progetto
2. Esegui la build del progetto: `gradle build`
3. Identifica il file `jar` nella directory `/build/libs/`
4. Esegui il Server: `java -cp build/libs/.jar chat.server.MainServer`
5. Esegui il Client in un'altra finestra: `java -cp build/libs/.jar chat.client.MainClient`
## Struttura e funzionamento
Il progetto si compone da quattro classi:- Nel package `chat.client`:
- L'entità [`Client`](src/main/java/chat/client/Client.java)
- [`MainClient`](src/main/java/chat/client/MainClient.java), la classe di avvio del Client- Nel package `chat.server`:
- L'entità [`Server`](src/main/java/chat/server/Server.java)
- [`MainServer`](src/main/java/chat/server/MainServer.java), la classe di avvio del Server
- [`Chat`](src/main/java/chat/server/Chat.java), la classe che si occupa di gestire i diversi Client connessi al ServerLe due entità, dopo una configurazione iniziale, permetteranno all'utente di poter scrivere messaggi da inviare all'altra entità e ricevere, contemporaneamente (tramite l'utilizzo dei thread), messaggi che verranno stampati a video.
Il Server permette a più Client di comunicare con lui, ma i Client potranno comunicare solo con il Server, essendo una comunicazione unicast.
Lato-Server per poter comunicare con uno dei possibili Client connessi sarà necessario scrivere:
```text
->
```La chat termina quando uno dei due digita `exit` nella console: in questo caso verranno invocati i rispettivi metodi di chiusura degli stream (`chiudi()`).
Entrambe le classi sono strutturate in modo che, nel caso in cui si verificasse improvvisamente un errore o un'eccezione (come ad esempio la disconnessione di una delle due entità), il programma, dopo averlo segnalato, invocherà i rispettivi metodi di chiusura degli stream (`chiudi()`).
## Licenza d'uso
Questo progetto (e tutte le sue versioni) sono rilasciate sotto la [MB General Copyleft License](LICENSE).