Buenas, a ver si podeis ayudarme. Estoy escribiendo un cliente IRC en python para aprender un poco como va el tema.
El código es este:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import socket
#Definimos los datos de conexion
nick = 'Nucklear_'
debug = False
chan='#testchan'
host = 'irc.quakenet.org'
port = 6667
ircSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Creamos el socket para la conexion
try:
ircSocket.connect((host,port)) #Conectamos con el servidor establecido
except socket.gaierror:
print "No se pudo conectar a: " + str(host) + ":" + str(port)
sys.exit(1) #Paramos le ejecución en caso de error
ircSocket.recv(4096)
ircSocket.send('NICK ' + nick + '\r\n')
ircSocket.send('USER John Doe Doe :Nuck IRC\r\n')
ircSocket.send('JOIN ' + chan + '\r\n')
while True:
data = ircSocket.recv(4096) #Almacenamos Buffer
print data #Imprimimos en consola la respuesta del servidor
if data.find('PING') != -1: #Buscamos en la respuesta 'PING'
ircSocket.send('PONG ' + data.split()[1] + '\r\n') #Enviamos 'PONG' como respuesta
El problema que tengo es que conecta al servidor pero no entra al canal porque creo que el comando JOIN se ejecuta antes de que esté conectado al 100%. ¿Sabeis como lo podría solucionar?
Y otra duda, el while True mantiene la conexión viva, ¿para seguir con la ejecución y que esa parte siga ejecutandose y no se desconecte debería ejecutarla en paralelo o como?