Skip to content
AlessandroSpallina edited this page Jan 15, 2018 · 10 revisions

My First IRC Client

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

Contestualizzazione

Voglio un c

Funzioni da implementare

  • 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

Clone this wiki locally