-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Realizzare un client IRC utilizzando socket TCP (SOCK_STREAM) [1] che implementa i seguenti comandi:
- PONG: di tanto in tanto il server pinga il client che deve rispondere con questo comando, altrimenti la connessione cade
- NICK: imposta il nickname univoco
- JOIN: joina una stanza
- PART: lasciare il canale
- QUIT: per quittare IRC
- TOPIC: settare o rimuovere un topic
- MSG: inviare un messaggio ad una stanza o un utente
- WHO
- WHOIS
- tutti quelli che vuoi [2]
Dopo avere implementato il client sviluppare un sistema che permetta all'utente di interagire con il protocollo (in maniera umana!) quindi un'interfaccia utente al server e ai canali. Un esempio di ciò (suddividisione per processi) può essere il processo Client che tramite shared memory (o un altro IPC) condivide struct (pacchetto messaggio) con altri processi di diversa natura: testo e/o comandi che verranno eseguiti su shell locale, quindi un agevolazione potrebbe essere quella di 'flaggare' la struct e metterla in un array: il processo visualizzatore visualizza solo se il messaggio è flaggato come text ed elimina lo stesso; il processo executer esegue su shell i messaggi (comandi) flaggati come exec. Uno scenario di utilizzo di questo sistema è:
-
Un Client IRC fatto con le tue mani (client + visualizzatore)
-
Computing remoto, anche a più macchine (client + executore): in questo contesto immagino di eseguire il sw su N macchine che si connettono alla stanza e se ricevono (gestendo autenticazione, valutate anche i messaggi privati) un comando speciale (che prevederete nelle vostre implementazioni) tipo 'exec:' da un utente trusted accettano il job, eseguono il comando e reindirizzano l'output dello stesso indietro all'utente IRC chiamante.
-
Visualizzatore: appunto l'interfaccia utente
-
Executer: un processo che si presta ad eseguire sulla shell locale il contenuto del messaggio ricevuto; immagino che il processo client mi allochi una s
Voglio un c
- parse_msg: parsare i messaggi che arrivano nella stanza per riconoscere i seguenti comandi:
- text:
Referenze
1: pagina 620, beginning linux programming 4 ed 2: https://it.wikibooks.org/wiki/IRC/Comandi