2010-11-10 22 views
5

Estoy escribiendo el código python para el cliente IRC.Cliente IRC en python

Quiero entender cómo el cliente IRC y el servidor se comunican entre sí.

¿Alguien puede darme un buen tutorial o una arquitectura de comunicación IRC para entenderlo en profundidad?

Gracias

Respuesta

9

Si desea reinventar la rueda, debe implementar la RFC y hacer todo desde cero.

Si no quiere hacer eso y requeriría un cierto nivel de abstracción para facilitar su desarrollo (y que debería), entonces vea Twisted. También hay una biblioteca Python IRC client.

+1

+1: la implementación de IRC con Twisted es fácil de hacer. –

+3

También escribí https://irc3.readthedocs.org/ con python3/asyncio – gawel

5

Para la mayoría de los protocolos de una buena manera de empezar es buscar un documento denominado RFC. Hay uno para muchos protocolos y define, en profundidad, cómo debe comportarse.

Puede encontrar el de IRC here.

10

La documentación de IRC RFC es una referencia importante, pero la primera introducción más útil que he encontrado sobre la comunicación entre el cliente de IRC y el servidor fue realmente simple.

Primero, necesita acceder a un shell * nix (por ejemplo, ssh en su servidor web que ejecuta Linux).

En la línea de comando, abra una conexión directa a un servidor IRC usando el programa 'nc'. Luego puede escribir comandos RFC directamente y ver la respuesta. Pruebe a escribir

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

No se emite desde el servidor en medio de esto, pero ahora que ha iniciado sesión en y "registrado" el usuario. Nota: su nick no está registrado (ala NickServ), me refiero a registrar un usuario como se describe en la sección 3.1 del RFC 2812 IRC Client Protocol.

Ahora puede unirse a un canal:

JOIN #yourtestchannel 

ver quién está en el canal:

WHO #yourtestchannel 

enviarse a sí mismo un msg:

PRIVMSG yournick Message Text Here 

chat en el canal (enviar el canalizar un mensaje):

PRIVMSG #yourtestchannel Message Text Here 

Esto es especialmente útil si está conectado al mismo servidor y canal con un nick diferente en un cliente IRC real. Puedes chatear contigo mismo y enviar un nick al otro, y ver la salida de IRC "en bruto" que tendrás que analizar para escribir tu propio cliente o bot.

Por ejemplo, alguien que charla en un canal se ve algo como esto:

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

Utilizando el RFC, se puede jugar con cualquier funcionalidad que desee y, más importante aún, encontrar la manera que necesita para analizar cosas

Ah, y no se olvide de PONG ocasionalmente, o cuando se le pida con un PING, para evitar el tiempo de espera de ping.

+0

¿La comunicación segura también es simple? –