<div dir="ltr">Hola, estoy programando un cliente de irc en C. Consigo conectar,
<br> mando el nick, devuelvo el ping, y mando el user ident, pero no hay
<br> manera de pasar de ahí. He comprobado que el servidor recibia los
<br> comandos porque registré el tráfico con wireshark, y vi como el
<br> servidor me mandaba los ACK cada vez que enviaba un comando.
<br> <p>Como puedo superar el paso de user ident?  alguna idea?
<br> </p><p>Gracias, he aquí el codigo:
<br> </p><p>#include <stdio.h>
<br> #include <sys/types.h>
<br> #include <sys/socket.h>
<br> #include <netinet/in.h>
<br> #include <netdb.h>
<br> </p><p>#define PORT 6667
<br> #define MAXDATASIZE 100
<br> #define MAX 1000
<br> </p><p>int main(int argc, char *argv[])
<br> {
<br> int fd, numbytes,a;
<br> char buf2[MAX];
<br> char buf[MAXDATASIZE], mensaje[20], mensaje2[200];
<br> struct hostent *he;
<br> </p><p>struct sockaddr_in server;
<br> </p><p>he=gethostbyname(argv[1]);
<br> </p><p>fd=socket(AF_INET, SOCK_STREAM, 0);
<br> </p><p>server.sin_family=AF_INET;
<br> </p><p>server.sin_port=htons(PORT);
<br> server.sin_addr=*((struct in_addr *)he->h_addr);
<br> bzero(&(server.sin_zero),8);
<br> </p><p>connect(fd, (struct sockaddr *)&server,sizeof(struct sockaddr));
<br> </p><p>numbytes=recv(fd,buf,MAXDATASIZE,0);
<br> </p><p>buf[numbytes]='\0';
<br> </p><p>printf("Mensaje del Servidor: %s\n",buf);
<br> </p><p>send(fd,"nick spycka",211,0);
<br> </p><p>numbytes=recv(fd,buf,MAXDATASIZE,0);
<br> buf[numbytes]='\0';
<br> printf("Mensaje del Servidor: %s\n",buf);
<br> </p><p>gets(mensaje);
<br> </p><p>send(fd,mensaje,211,0);
<br> </p><p>send(fd,"user ident pereira ramos josu",50,0);
<br> </p><p>numbytes=recv(fd,buf2,MAX,0);
<br> buf2[numbytes]='\0';
<br> printf("%s\n",buf2);
<br> </p><p>close(fd);
  </p></div>