2010-11-10 7 views
5

Scrivo codice Python per client IRC.Client IRC in python

Voglio capire in che modo client e server IRC comunicano tra loro.

Qualcuno può darmi un buon tutorial o architettura di comunicazione IRC per capirlo in profondità?

Grazie

risposta

9

Se si desidera reinventare la ruota, è necessario implementare la RFC e fare tutto da zero.

Se non si desidera farlo e richiederebbe un certo livello di astrazione per facilitare lo sviluppo (e quale si dovrebbe), vedere Twisted.

C'è anche una libreria Python IRC client.

+1

+1: l'implementazione di IRC con Twisted è facile. –

+3

Ho anche scritto https://irc3.readthedocs.org/ con python3/asyncio – gawel

5

Per la maggior parte dei protocolli un buon modo per iniziare è quello di cercare un documento denominato RFC. Ce n'è uno per molti protocolli e definisce - in profondità - come dovrebbe comportarsi.

È possibile trovare quello per IRC here.

10

La documentazione IRC RFC è un riferimento importante, ma la prima introduzione più utile che ho trovato sulla comunicazione tra client e server IRC è stata davvero semplice.

Innanzitutto, è necessario accedere a una shell * nix (ad esempio, ssh nel proprio host Web che esegue Linux).

Nella riga di comando, aprire una connessione diretta a un server IRC utilizzando il programma 'nc'. Quindi puoi digitare direttamente i comandi RFC e vedere la risposta. Provate a digitare

$ nc wright.freenode.net 6667 
PASS whateveryoulike 
NICK yournick 
USER username 0 * :Real Name 

C'è uscita dal server in mezzo a questo, ma ora che hai eseguito l'accesso e "registrato" l'utente. Nota: il tuo nick non è registrato (ala NickServ), mi riferisco alla registrazione di un utente come descritto nella sezione 3.1 dello RFC 2812 IRC Client Protocol.

Ora è possibile entrare in un canale:

JOIN #yourtestchannel 

Vedere chi è nel canale:

WHO #yourtestchannel 

inviarti un msg:

PRIVMSG yournick Message Text Here 

Chat nel canale (inviare il channel a msg):

PRIVMSG #yourtestchannel Message Text Here 

Ciò è particolarmente utile se si è connessi allo stesso server e canale con un nick diverso in un vero client IRC. Puoi chattare con te stesso e inviare un nick all'altro e vedere l'output IRC "raw" che dovrai analizzare per scrivere il tuo client o bot.

Per esempio, qualcuno in chat in un canale sembra qualcosa di simile:

:[email protected]_various_parts PRIVMSG #channel :Hey guys, what's up? 

Utilizzando la RFC, si può giocare con qualsiasi funzionalità desiderata, e, soprattutto, capire come avrete bisogno analizzare le cose.

Oh, e non dimenticare di PONG di tanto in tanto, o quando viene richiesto con un PING, per evitare il timeout del ping.

+0

Anche la comunicazione sicura è semplice? –