Template repository per l'assegnazione della prima prova di esonero: client-server TCP.
Questo repository contiene la struttura base per lo sviluppo di un'applicazione client-server TCP in linguaggio C, utilizzando la libreria standard delle socket. Il codice è progettato per essere portabile su sistemi operativi Windows, Linux e macOS.
Il repository è organizzato in due progetti Eclipse CDT separati:
.
├── client-project/ # Progetto Eclipse per il client
│ ├── .project # Configurazione progetto Eclipse
│ ├── .cproject # Configurazione Eclipse CDT
│ └── src/
│ ├── main.c # File principale del client
│ └── protocol.h # Header con definizioni e prototipi
│
└── server-project/ # Progetto Eclipse per il server
├── .project # Configurazione progetto Eclipse
├── .cproject # Configurazione Eclipse CDT
└── src/
├── main.c # File principale del server
└── protocol.h # Header con definizioni e prototipi
- Cliccare su "Use this template" in alto a destra su GitHub
- Creare un nuovo repository personale
- Rinominate il repository sostituendo la parola template con il vostro cognome seguito dalla matricola (
template_esonero_tcp->cognome_12345_esonero_tcp) - Se l'esonero è svolto in coppia, il nome del repository sarà
cognome1_12345_cognome2_6789_esonero_tcp
- Rinominate il repository sostituendo la parola template con il vostro cognome seguito dalla matricola (
- Clonare il repository sul proprio computer:
git clone <url-del-tuo-repository>
- Aprire Eclipse CDT
- Selezionare
File → Import → General → Existing Projects into Workspace - Selezionare la directory
client-project - Ripetere i passi 2-3 per
server-project
Dopo aver importato i progetti, è necessario verificare e configurare le impostazioni del compilatore:
Per ciascun progetto (client e server):
- Click destro sul progetto →
Properties - Andare in
C/C++ Build → Tool Chain Editor - Verificare che il Current toolchain sia corretto per il proprio sistema operativo:
- Linux: GCC
- macOS: GCC
- Windows: MinGW GCC (Assicurarsi di avere già installato MinGW o MinGW-w64)
Per compilare su Windows, è necessario linkare la libreria Winsock:
- Click destro sul progetto →
Properties - Andare in
C/C++ Build → Settings - Selezionare
MinGW C Linker → Libraries - In Libraries (-l), cliccare su
Adde inserire:wsock32 - Applicare le modifiche e cliccare
OK
Contiene:
- Costanti condivise: numero di porta del server, dimensione buffer, ecc.
- Prototipi delle funzioni: inserire qui le firme di tutte le funzioni implementate
Esempio:
#define SERVER_PORT 27015
#define BUFFER_SIZE 512
// Prototipo funzione esempio
int connect_to_server(const char* server_address);Contiene:
- Codice boilerplate per la portabilità cross-platform
- Inizializzazione Winsock su Windows
- Sezioni TODO dove implementare la logica dell'applicazione
Gli studenti devono:
-
Definire i parametri nel file
protocol.h:- Numero di porta dell'applicazione
- Dimensione dei buffer
- Altre costanti necessarie
-
Implementare le funzioni necessarie:
- Aggiungere i prototipi nel file
protocol.h - Implementare le funzioni nel file
main.c
- Aggiungere i prototipi nel file
-
Completare il codice seguendo le sezioni TODO:
- Client: creazione socket, connessione al server, invio/ricezione dati
- Server: creazione socket, bind, listen, accept, gestione client
- Utilizzare le costanti definite in
protocol.hinvece di valori hardcoded
Vedere il file LICENSE per i dettagli.