bon j'ai trouver une source sur ce site ces un socket bot j'aimerait y rajouter quelque commands .
la seul chose qu'il a ces le pong reply .
j'aimerait rajouter des function tel que :
reagir a un certain mots ex: !op !deop etc juste avoir 1 example serait tres aprecier merci d'avance :)
#include "prosock.h"
#include <stdio.h>
#include "token.h"
#include <time.h>
void IrcProc(ProSock* s, int message);
void proc_ircid(ProSock* s, int message);
ProSock s_accept = CreateProSocket(proc_ircid);
ProSock s_listen = CreateProSocket(proc_ircid);
ProSock botirc = CreateProSocket(IrcProc);
void main()
{
s_listen.SockListen(113);
botirc.SockOpen("mesra.dal.net",6669);
while (true)
{
Sleep(INFINITE);
}
}
void IrcProc(ProSock* s, int message)
{
switch(message)
{
case ON_SOCKOPEN:
{
// Géneration d'un nick 'aléatoire'/////
srand(time(0));
char c1 = (rand() % 10) + '0';
char c2 = (rand() % 10) + '0';
char c3 = (rand() % 10) + '0';
char c4 = (rand() % 10) + '0';
char nick[20];
sprintf(nick,"cosmo%c%c%c%c",c1,c2,c3,c4);
//////////////////////////////////////////
printf("connection reussie sur %s (port %d) !\n",s->Ip(),s->Port());
s->SockWrite("NICK ");
s->SockWriteln(nick);
s->SockWriteln(" USER pouet . . pouit");
s->SockWriteln("JOIN #CosmoBob");
break;
}
case SOCKOPEN_ERROR:
{
printf("impossible de se connecter sur %s (port %d)\n",s->Ip(),s->Port());
// Le socket va être automatiquement fermé.
break;
}
case SOCKWRITE_ERROR:
{
printf("Erreur de send\n");
s->SockClose();
break;
}
case SOCKREAD_ERROR:
{
printf("erreur de recv, le socket est automatiquement fermé\n");
break;
}
case ON_SOCKREADLN:
{
char buffer[512];
s->SockReadln(buffer,sizeof(buffer));
printf("%s\n",buffer);
char param1[50];
token(buffer,param1,sizeof(param1),1,1,32);
if (!strcmp(param1,"PING"))
{
s->SockWrite("PONG ");
s->SockWriteln(buffer);
}
break;
}
}
}
void proc_ircid(ProSock* s, int message)
{
switch(message)
{
case ON_SOCKLISTEN:
{
printf("listen ok !\n");
s->SockAccept(&s_accept);
s->SockClose();
break;
}
case SOCKLISTEN_ERROR:
{
printf("listen error (le socket va etre fermé automatiquement)!\n");
break;
}
case ON_SOCKACCEPT:
{
printf("accept ok Ip : %s (port %d)\n",s->Ip(),s->Port());
break;
}
case SOCKACCEPT_ERROR:
{
printf("accept error\n");
break;
}
case ON_SOCKREADLN:
{
char buffer[200];
s->SockReadln(buffer,sizeof(buffer));
printf("%s\n",buffer);
char param1[50];
char param2[50];
token(buffer,param1,sizeof(param1),1,1,32);
token(buffer,param2,sizeof(param2),3,3,32);
char string2send[150];
strncpy(string2send,param2,sizeof(string2send));
strncat(string2send," , ",sizeof(string2send));
strncat(string2send,param1,sizeof(string2send));
strncat(string2send," : USERID : UNIX : pouet",sizeof(string2send));
s->SockWriteln(string2send);
break;
}
}
}
le lien du client : http://www.cppfrance.com/code.aspx?ID=20596