[C con Clase] Cliente de irc en C

Programante programante en gmail.com
Mie Oct 1 17:06:42 CEST 2008


yo vegano escribió:
> Hola, estoy programando un cliente de irc en C. Consigo conectar,
> mando el nick, devuelvo el ping, y mando el user ident, pero no hay
> manera de pasar de ahí. He comprobado que el servidor recibia los
> comandos porque registré el tráfico con wireshark, y vi como el
> servidor me mandaba los ACK cada vez que enviaba un comando.
>
> Como puedo superar el paso de user ident?  alguna idea?
>

Tienes dos problemas. El primero es que no usas bien la llamada send()
El tercer parámetro debe ser el número de bytes (caracteres) que envías.
En cambio utilizas valores mayores.

En segundo lugar, el protocolo irc acaba todas sus líneas con CRLF ("\r\n"),
cosa que no haces.

> send(fd,"nick spycka",211,0);
>
Aquí iría 11, no 211

> numbytes=recv(fd,buf,MAXDATASIZE,0);
> buf[numbytes]='\0';
> printf("Mensaje del Servidor: %s\n",buf);
>
> gets(mensaje);
>
Ten en cuenta que gets es insegura...

> send(fd,mensaje,211,0);
>
¿El usuario siempre va a introducir 211 bytes? Querrás enviar 
strlen(mensaje)

> send(fd,"user ident pereira ramos josu",50,0);
>
Y aquí debería haber un 30, no un 50






Más información sobre la lista de distribución Cconclase