Client irc

Signaler
Messages postés
42
Date d'inscription
lundi 28 avril 2003
Statut
Membre
Dernière intervention
28 mars 2014
-
Messages postés
42
Date d'inscription
lundi 28 avril 2003
Statut
Membre
Dernière intervention
28 mars 2014
-
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

2 réponses

Messages postés
305
Date d'inscription
jeudi 29 avril 2004
Statut
Membre
Dernière intervention
18 janvier 2012

lol en clair tu veux que qqun fasse le boulot à ta place

Everything is possible...so...nothing, forget
Messages postés
42
Date d'inscription
lundi 28 avril 2003
Statut
Membre
Dernière intervention
28 mars 2014

hum non pas vraiment j`ai trouver par moi meme avec la lib winsock mais merci quand meme