1.1 RETI INFORMATICHE

Documenti analoghi
Numero NaviDimensione Nave

RETI INFORMATICHE LATO CLIENT CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2016/2017

SISTEMI DI ELABORAZIONE

SISTEMI DI ELABORAZIONE

SISTEMI DI ELABORAZIONE

1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/ Lato client

Il client deve stampare tutti gli eventuali errori che si possono verificare durante l esecuzione.

SISTEMI DI ELABORAZIONE

SISTEMI DI ELABORAZIONE

SISTEMI DI ELABORAZIONE

Laboratorio di Reti, Corsi A e B. Text-Twist. Progetto di Fine Corso A.A. 2016/17

Esercitazione [7] Client/Server con Socket

Simple Social: implementazione di una

ORGANIZZAZIONE DI SISTEMI OPERATIVI E RETI

Laboratorio di. Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017. Ing. Niccolò Iardella

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Prova di laboratorio di reti di calcolatori

Corso di Reti di Calcolatori L-A

Architettura di Reti

Lo strato di Trasporto

Esercitazione [7] Server multi-process/multi-thread

Fondamenti di Informatica T-1

Esercizio 2. Client e server comunicano attraverso socket TCP

Le Reti Informatiche

Corso di Reti di Calcolatori T

Laboratorio di. Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica A.A. 2017/2018. Ing. Carlo Vallati

Array. // utente pippo $utente1 = array( username => pippo, password => pippo123, ruolo => amministratore );

Gestione multilivello che permette di creare uno o più utenti Master (installatori)

I.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE. Classe: 5Ci

Reti di calcolatori Tecnologie Web Prova in itinere 2 16 giugno 2010

Esercitazione [08] Server multi-process/multi-thread

LABORATORIO di Reti di Calcolatori

Parte II: Reti di calcolatori Lezione 11 (35)

Reti di Calcolatori:

Lato client: vuol dire che le operazioni programmate vengono svolte e visualizzate direttamente sul computer dell'utente collegato

Laboratorio di Programmazione (Corso di Laurea in Informatica)

La connessione ai database MySQL tramite script PHP versione 5.5

ISTRUZIONI OPERATIVE PER LA COMPILAZIONE ONLINE DELLA DOMANDA DI MOBILITA PER PROFILO OSS

Architetture di rete. 4. Le applicazioni di rete

J-DAA Ricevitore. Manuale operativo Procedura di appuramento e-ad. Indice degli argomenti. 1. Premessa Pag. 2

API Socket di Berkeley

Corso di Reti di Calcolatori T

Esercitazione [09] Approfondimento su Letture e Scritture con Descrittori

Manuale del Software

Livello applicazione. Fondamenti di Informatica

Parte II: Reti di calcolatori Lezione 13 (37)

LABORATORIO di Reti di Calcolatori

TECN.PROG.SIST.INF. I Socket Roberta Gerboni

Programmazione dei socket con TCP #2

Corso di Informatica

Internet (- working). Le basi.

Si consideri il protocollo applicativo FTP e lo scambio di messaggi sulla connessione TCP di segnalazione mostrato in figura.

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

IseConsulting snc. Manuale Installazione Mysql

VERSIONE 1.1 APRILE Manuale Operativo

Sistemi Operativi. Corso di Laurea Triennale in Ingegneria Informatica. Daniel Cesarini

Laboratorio di. Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica A.A. 2018/2019. Ing. Carlo Vallati

Reti di Calcolatori. Master "Bio Info" Reti e Basi di Dati Lezione 3

Organizzazione della lezione

Università degli Studi di Cagliari

Esercizi su. Istruzioni di scelta multipla. Overflow

Programmazione in Rete

Esercitazione [9] Riepilogo sui Semafori

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

14/12/2018 Informatici e di Telecomunicazioni

CopsAndRobbers: dall'architettura al codice. Dipartimento di Informatica - Università di Pisa C. Montangero

Fondamenti di Informatica T-1

Jackpot Rango. 1. Panoramica. Regole del Gioco (v1.7 21/03/2017)

Lo strato di applicazione in Internet

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009

Laboratorio di Programmazione (Corso di Laurea in Informatica)

Laboratorio di Programmazione (Corso di Laurea in Informatica)

Reti. insieme di computer (host) interconnessi. Token evita conflitti di trasmissione Rete più o meno affidabile

Regolamento EYE OF THE AMULET

Cinema On Line (COL) Sportello Telematico. Presentazione Domanda di qualifica di opera cinematografica di espressione originale italiana

Progettazione di Servizi Web e Reti di Calcolatori

Struttura di un applicazione Instant Developer

Reti di Calcolatori e Laboratorio

Guida all uso. Eureka Web

Manuale di Utilizzo. Palmari Risto Orderman

Procedura di registrazione all Albo Fornitori di Æqua Roma S.p.A.

2008 Nokia. Tutti i diritti sono riservati. Nokia, Nokia Connecting People ed Nseries sono marchi o marchi registrati di Nokia Corporation.

Manuale Utente Guglielmo SmartClient

o Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori

Simulazione esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Airone Gestione Rifiuti

Regolamento Roulette Francese

1 MANUALE OPERATIVO DI TMDStarter...5

ISTRUZIONI PER L'UTILIZZO DEL SISTEMA HOT SPOT ICT VALLE UMBRA

Istruzioni per l'uso. Guida dell'utente

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO XI.2018

QUAGENTS. A Game Platform for Intelligent Agents. Guida all installazione e all utilizzo. Berardi Francesco Matricola

Esercitazione [6] Client/Server con Socket

11. Protocollo di trasporto a datagramma: User Datagram Protocol (UDP)

Manuale Utente del Portale MyTerna. La Registrazione

I/O e strutture di controllo

Transcript:

1 1.1 RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2012/2013 Il progetto consiste nello sviluppo di un applicazione client/server. Sia il server che il client dovranno essere mono-processo e sfrutteranno l'i/o multiplexing per gestire più input ed output simultaneamente. L applicazione da sviluppare è il gioco del TRIS seguendo il paradigma peer2peer. La mappa del gioco è la seguente: 7 8 9 4 5 6 1 2 3 Ogni casella è identificata dal numero riportato in figura. Durante una partita ogni giocatore ha a disposizione uno dei due simboli di gioco: X oppure O. Il server avrà il compito di memorizzare gli utenti connessi e le porte su cui rimarranno in ascolto. Lo scambio di informazioni tra client e server avverrà tramite socket TCP. Queste informazioni saranno solo informazioni di controllo che serviranno per implementare la comunicazione peer2peer. Lo scambio di messaggi tra i client avverrà tramite socket UDP. 1.1.1 Lato client Il client deve essere avviato con la seguente sintassi:./tris_client <host remoto> <porta> dove: <host remoto> è l indirizzo dell host su cui è in esecuzione il server; <porta> è la porta su cui il server è in ascolto. I comandi disponibili per l utente devono essere:!help!who!quit!connect nome_utente!disconnect!show_map

!hit num_cell RETI INFORMATICHE - SPECIFICHE DI PROGETTO A.A. 2012/2013 2 Il client deve stampare tutti gli eventuali errori che si possono verificare durante l esecuzione. All avvio della connessione il client deve inserire il suo username e la porta di ascolto UDP per i comandi relativi al gioco. Un esempio di esecuzione è il seguente: $./tris_client 127.0.0.1 1234 Connessione al server 127.0.0.1 (porta 1234) effettuata con successo Sono disponibili i seguenti comandi: *!help --> mostra l'elenco dei comandi disponibili *!who --> mostra l'elenco dei client connessi al server *!connect nome_client --> avvia una partita con l'utente nome_client *!disconnect -->disconnette il client dall'attuale partita intrapresa con un altro peer *!quit --> disconnette il client dal server *!show_map --> mostra la mappa di gioco *!hit num_cell --> marca la casella num_cell (valido solo quando è il proprio turno) Inserisci il tuo nome: client1 Inserisci la porta UDP di ascolto: 1025 Implementazione dei comandi help: mostra l elenco dei comandi disponibili. Esempio di esecuzione: Sono disponibili i seguenti comandi: *!help --> mostra l'elenco dei comandi disponibili *!who --> mostra l'elenco dei client connessi al server *!connect nome_client --> avvia una partita con l'utente nome_client *!disconnect -->disconnette il client dall'attuale partita intrapresa con un altro peer *!quit --> disconnette il client dal server

3 *!show_map --> mostra la mappa di gioco *!hit num_cell --> marca la casella num_cell (valido solo quando è il proprio turno) who: mostra l elenco dei client connessi (OPZIONALE: mostrare anche lo stato del client, cioè dire se è occupato o meno in una partita). Il server mantiene una lista dei client connessi in ogni momento. La lista contiene gli username, l'indirizzo ip e la porta di ascolto UDP con cui i client si sono registrati al momento della connessione. Esempio di esecuzione: > who Client connessi al server: client1 client2 client3 client4 >!connect nome_client: il client avvia una partita con l'utente nome_client. Un client vuole avviare una partita con un altro client di nome nome_client. Gli errori da gestire sono: nome_client inesistente, errori a livello protocollare. nome_client già occupato in una partita Più in dettaglio il client farà richiesta al server (sempre tramite tcp) per sapere se esiste l'utente nome_client. Se esiste e non è occupato il server manderà una richiesta al client nome_client per sapere se è intenzionato ad accettare la partita con il client. Se la risposta è affermativa allora il server comunicherà al client l'indirizzo ip e porta di ascolto UDP del client nome_client. Se negativa il server risponderà con uno specifico messaggio di errore. Il simbolo X è assegnato all utente che ha richiesto la connessione. La concorrenza tra standard input e socket dovrà essere gestita sempre tramite select. Esempio di esecuzione: >!connect nome_client nome_client ha accettato la partita partita avviata con nome_client il tuo simbolo è: X E' il tuo turno: #!hit 3 E' il turno di nome_client nome_client ha marcato la casella 7 #!hit 5

4 Possibile segnalazione di errore: >!connect nome_client Impossibile connettersi a nome_client: utente inesistente. >!connect nome_client Impossibile connettersi a nome_client: l'utente ha rifiutato la partita. Partita Avviata: Quando la partita è avviata il sistema dovrà accettare i seguenti comandi: 1)!disconnect 2)!quit 3) [opzionale]!who 4) [opzionale]!help 5)!hit num_cell 6)!show_map Se una partita è avviata si deve capire dal primo carattere della shell: 1 > shell comandi (sono accettati solo i comandi di base, se immesso altro viene restituito un errore) 2 # shell partita (si accettano i comandi relativi al gioco)!disconnect: disconnette il client dall'attuale partita. #!disconnect Disconnessione avvenuta con successo: TI SEI ARRESO Quando un client esegue una disconnessione comunicherà 1 al server (tramite tcp) che l'utente è di nuovo libero 2 all'altro client (tramite udp) che è stata effettuata una disconnessione Il client che riceve il messaggio di disconnessione dovrà comunicare al server che è di nuovo libero e stampare a video un messaggio di vittoria.!quit: il client chiude il socket con il server, il socket udp ed esce. Il server stampa un messaggio che documenta la disconnessione del client. Il server, inoltre, dovrà gestire in maniera appropriata la disconnessione di un cliente.

>!quit Client disconnesso correttamente!show_map: il client mostra la mappa di gioco, in particolare per ogni casella dovrà essere mostrato lo stato. 1.1.1 Lato server 5 Il programma tris_server si occupa di gestire le richieste provenienti dai client. Il server tris_server tramite l'uso della select, accetterà nuove connessioni tcp, registrerà nuovi utenti e gestirà le richieste dei vari client per aprire nuove partite. La sintassi del comando è la seguente:./tris_server <host> <porta> dove: <host> è l indirizzo su cui il server viene eseguito; <porta> è la porta su cui il server è in ascolto. Una volta eseguito, tris_server deve stampare a video delle informazioni descrittive sullo stato del server (creazione del socket di ascolto, connessioni accettate, operazioni richieste dai client ecc.). Un esempio di esecuzione del server è il seguente: $./tris_server 127.0.0.1 1235 Indirizzo: 127.0.0.1 (Porta: 1235) Connessione stabilita con il client pippo si e' connesso pippo è libero Connessione stabilita con il client pluto si e' connesso pluto è libero pippo si è connesso a pluto pluto si è disconnesso da pippo pippo è libero pluto è libero 1.1.1Avvertenze e suggerimenti Modalità di trasferimento dati tra client e server (e viceversa).

6 1) Client e server si scambiano dei dati tramite socket TCP. Prima che inizi ogni scambio è necessario che il ricevente sappia quanti byte deve leggere dal socket. NON È AMMESSO CHE VENGANO INVIATI SU SOCKET NUMERI ARBITRARI DI BYTE. Il client si disconnette in automatico da una eventuale partita dopo 1 minuto di inattività: 1 Non viene scritto niente nello standard input per un minuto 2 Non si riceve niente sul socket udp per un minuto 1.1.1 1.1.2 Valutazione del progetto Il progetto viene valutato durante lo svolgimento dell'esame. Il tutto verrà fatto girare su una macchina con sistema operativo debian. Si consiglia caldamente di testare il sorgente su una macchina debian prima di venire all'esame. La valutazione prevede le seguenti fasi. 1.Compilazione dei sorgenti. Il client e il server vengono compilati attivando l'opzione -Wall che abilita la segnalazione di tutti i warning. Si consiglia vivamente di usare tale opzione anche durante lo sviluppo del progetto, interpretando i messaggi forniti dal compilatore. 2.Esecuzione dell applicazione. Il client e il server vengono eseguiti simulando una tipica sessione di utilizzo. In questa fase si verifica il corretto funzionamento dell applicazione e il rispetto delle specifiche fornite. 3.Esame del codice sorgente. Il codice sorgente di client e server viene esaminato per controllarne l implementazione.