Irc_bot ( mon premier programme !!! )

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 728 fois - Téléchargée 34 fois

Contenu du snippet

Hello world , lol , bah moi pour ma premiere source g préférer apprendre ac les sockets , heyhey c plus interressant . Bon ce bot ne fé que se connecté à l'irc , il join un canal à la connection , se reconnect après déconnection .

Je compte l'ameliorer en ajoutant des raws commandes ms fo que je trouve comment filtrer les messages reçu par le server ( lol il fo que je puisse récuperer des bou de message pr les comprarers )
!Help! si vous pouvez m'aider , no problem !Help!

si vous compilez en console , vs pouvez rajouté ceci a la fin du prog pour savoir se qui est envoyé par le server :
printf("bot :%s",buff);

Source / Exemple :


#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")

char *server = "127.0.0.1";
int port = 6667;
char *nick = "nick-bot";
char *chan = "#chan";
char buff[4096];
char tmp[4096];

void main()
{

while (1) { 

WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKADDR_IN sin;
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr			= inet_addr(server);
sin.sin_family				= AF_INET;
sin.sin_port				= htons(port);
connect(sock, (SOCKADDR *)&sin, sizeof(sin));

memset(tmp,0,255);
wsprintf(tmp,"USER azerteam \"\" \"127.0.0.1\" :%s%c",nick,10);
send(sock,tmp,strlen(tmp),0);

memset(tmp,0,255);
wsprintf(tmp,"NICK %s%c",nick,10);
send(sock,tmp,strlen(tmp),0);

Sleep(100);

memset(tmp,0,255);
wsprintf(tmp,"JOIN %s%c",chan,10);
send(sock,tmp,strlen(tmp),0);

while (1) { 
memset(buff,0,255);
recv( sock,buff,255,0);

if ( strstr(buff,"PING") != 0 ) { 
send(sock,"PONG :\r\n",6,0);
}

if ( strlen(buff) == 0 ) { 
closesocket(sock);
break; 
}
memset(buff,0,255);
};
}

}

Conclusion :


Have fun

by abdoulax

A voir également

Ajouter un commentaire

Commentaires

cs_open
Messages postés
16
Date d'inscription
mercredi 16 juillet 2003
Statut
Membre
Dernière intervention
29 octobre 2008
-
Salut , j'ai des erreurs [link error] etc..

C'est quoi ? Soluce ?
logant83
Messages postés
90
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
6 mars 2007
-
while (1) {
memset(buff,0,255);
recv( sock,buff,255,0);

Ca te fait une boucle infini, sur cela je suis avec toi à 100% mais tu recevras, mais tu ne pourras pas traiter... (Oui j'ai testé)
abdoulax
Messages postés
875
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
22 juin 2012
-
LOL kes t'en c que ta essayé avant moi ?? :S
MDR

Enfin bon ça fait un moment que j'ai pas touché au socket mais si je me trompe pas le message envoyé par le serveur restera en attente tant que l'instruction recv suivante ne sera pas executé... Je pense que tu as mal formulé ton commentaire mais en effet dans certain k il faut utilisé les threads ms ce n'est pas tjs le k !!!

Have fun
logant83
Messages postés
90
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
6 mars 2007
-
oué okey, mais te faut un thread sinon tu pourras pas gérer les messages envoyé par le server, ou sinon t'en traitera 1 mais pas le 2 éme car tu pourras pas... jpeut t'en parler d'expérience, j'ai essayé avant toi, ta méthode.
abdoulax
Messages postés
875
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
22 juin 2012
-
C vrai que y a des truc maladroi !!

Sinon pour les pointeur je les avais utilisé sans les comprendre !! Et pour la connection, j'avais trouvé un exemple de client en socket sur developpez.com et je l'ai adapté au protocole irc...

Have fun

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.