Esercitazione con socket Scrivere un programma client-server in C che utilizzi le socket Server Stia in attesa su una porta nota definibile da linea di comando Accetti una connessione dal client e crei una nuova socket per questa connessione in modo tale da gestire più clienti contemporaneamete (più client possono giocare contemporaneamente con lo stesso server) Accetti il comando giochi dal client e ritorni la lista dei giochi che il client può eseguire tramite il server Gestisca l’invio di comandi errati da parte del client Accetti il comando esegui gioco (gioco è uno dei giochi disponibili) Implementi come minimo il gioco carta-forbice-pietra e un altro gioco (a scelta dello studente) Gestisca l’esecuzione del gioco con il client Gestisca il comando exit che, in qualunque istante, chiude la connessione ed esce dall’applicazione
Esercitazione con socket (cont.) Server che implementa “carta-forbice-pietra” Regole fondamentali: Pietra rompe Forbice (vince pietra) Carta avvolge Pietra (vince carta) Forbice taglia Carta (vince forbice) Parità in caso di oggetti uguali Accetti il comando (indifferentemente minuscolo o maiuscolo) c (per carta), f (per forbice) e p (per pietra) Indipendentemente dal comando ricevuto, generi in maniera casuale c, f o p ed effettui il confronto con il comando inviato dal client in modo da stabilire chi ha vinto la mano Calcoli il numero di mano , aggiorni il punteggio e restituisca la seguente tipologia di output: Mano n. 1 - client: pietra, server: carta => vince il server (o le altre combinazioni) Punteggio - client: 0, server:1 Carta, forbice o pietra? Quando il punteggio arriva a 10, dichiari vincitore il server o il client Accetti in qualunque istante i seguenti comandi help che fornisce una breve spiegazione del gioco quit che esce dal gioco e ritorna alla lista dei giochi exit che chiude la connessione ed esce dal programma Informi il client se il comando inviato è errato
Esercitazione con socket (cont.) Client Si connetta ad un server specificando nome e porta da linea di comando Fornisca la possibilità di inviare il comando giochi al server e mostri all’utente la lista dei giochi che il client può eseguire tramite il server Fornisca la possibilità di inviare il comando esegui gioco Per il gioco “carta-forbice-pietra” Mostri al client il prompt Carta, forbice o pietra? Permetta l’invio del comando (indifferentemente minuscolo o maiuscolo) c (per carta), f (per forbice) e p (per pietra) Permetta l’invio dei comandi help quit exit Possibili estensioni Si possono implementare altri giochi oltre “carta-forbice-pietra”, ad es. “sette e mezzo” Interfaccia grafica