seguramente se pueden mejorar muchas cosas pero de esta forma funciona
Código
#include <winsock2.h> #include <windows.h> #include <cstring> #include <cstdio> void comandos(char *usuario,char *cmand, char *sala,char *mensaje) { //char comando[130]="PRIVMSG #botslols :Soy un inutil bot en c :(\r\n"; //send(sock,comando,strlen(comandos),0); } int main() { SetConsoleTitle("irc bot"); WSADATA wsa; SOCKET sock; int conex; int len; char Buffer[1024]; // char peticion1[]="NICK BOTpurakerdal\r\n"; // nombre del bot char peticion2[]="USER BOTpurakerdal 1 1 1\r\n"; //nombre completo char peticion3[]="JOIN #botslols\r\n"; //sala int enviado=0; char pong[130]="PONG :"; char ping[130]={0}; struct hostent *host; struct sockaddr_in direc; WSAStartup(MAKEWORD(2,0),&wsa); host=gethostbyname("chat.freenode.net"); sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if (sock==-1) { return -1; } direc.sin_family=AF_INET; direc.sin_port=htons(6667); direc.sin_addr = *((struct in_addr *)host->h_addr); conex=connect(sock,(sockaddr *)&direc, sizeof(sockaddr)); if(conex==-1) { return -1; } int final3; int ciclo2; //------------------------------- char cadenita[500]; char cadenita2[500]; char usuario[500]; char sala[500]; char cmand[500]; char mensaje[500]; //-------------------------- char *star; //------------------ int ciclo; { len = recv(sock, Buffer, sizeof(Buffer), 0); //enviar el pong que es la respuesta al ping de irc for(int ewe=0;ewe != len;ewe++) { if((Buffer[ewe]=='P')&&(Buffer[ewe+1]=='I')&&(Buffer[ewe+2]=='N')&&(Buffer[ewe+3]=='G')) { } } //--------------------------------------- if(Buffer[0]==':') // si comienza en : es un comando { for(ciclo=0;(ciclo<500)&&(Buffer[ciclo]!='\r');ciclo++) { cadenita[ciclo]=Buffer[ciclo]; } //le quitamos la basura al buffer comandos(usuario,cmand,sala,mensaje); } } return 0; }