Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : projet bot irc [ Archives / Au secours ] (shadow1779)

samedi 5 novembre 2005 à 23:02:36 | projet bot irc

shadow1779

Membre Club

Bonjour,

j'ai un projet de faire un petit bot irc, tout sommaire au debut pour m'ameliorer avec les sockets en C, le socket se connecte bien mais je pense que les messages send ne sont pas envoyés, quelqu'un pourrait t'il me faire une correction de ma ou mes erreurs s'il vous plait et m'expiquer d'ou cela vient

code:   http://shadow1779.ifrance.com/archives%20prog/ircbot.txt


dimanche 6 novembre 2005 à 00:46:30 | Re : projet bot irc

juki_webmaster

Membre Club
Réponse acceptée !
Salut,
N'etant pas expert de winsock je vais te repondre d'une seule chose:

sprintf(buffer,"NICK %s",nick);
printf("%s\n",buffer);
send(sock, buffer, strlen(buffer), 0);
sprintf(buffer,"USER %s",nick);
send(sock, buffer, strlen(buffer), 0);

Sous le procole IRC, la requette USER passe devant la requette NICK, deplus il ya un separateur qui est le saut de ligne classique: \n

Deplus, la majorité des serveurs IRC demmande un PING -> PONG avant de dire: "Toi t'est un vrai user!" , le ping/pong doit de preference etre dans un thread separer pour eviter le revc() bloquant (voir l'erreur classique: la boucle infini utilisant 100% du CPU).

Pour de petites initiations comme celle-ci les char statiquement alloué suffisent, parcontre commance dés aujoudhui a t'initier aux char dynamiquement alloué -> malloc() realloc() free().
Deplus je ne voit pas de memset() nul part, strcpy() est a eviter => strncpy().

Il ya une sympatique source d'un robot IRC sur ce site, une recherche s'impose donc, tu peux aussi aller voir la RFC, elle ne t'expliquera le protocole a suivre pour avoir un bot correct.

Bon courage.

dimanche 6 novembre 2005 à 01:35:26 | Re : projet bot irc

cosmobob

Réponse acceptée !
salut,
en + ya un buffer overflow (probleme le plus dramatique du C) sur ton tableau char ip[15] (solution; utilise char ip[16];)
au lieu de vouloir avoir pile la bonne taille, tu aurais du prévoir un peu de mou, ca t'aurait peut etre éviter un pb ... allez recompte : une ip au max, c'est 4 nombres de 3 chiffres, et 3 points qui les separent... ca, ca fait effectivement 15 caractere, pas de bol t'as oublié le caractere 0 qui marque la fin de la chaine, et qui fait déborder ton tableau.

sinon le premier truc a envoyer:

sprintf(buffer, "NICK %s\nUSER %s . . :%s\n", nick, nick, "bot fullname");
send(sock, buffer, strlen(buffer), 0);

sprintf(buffer, "JOIN %s\n", channel);
send(sock, buffer, strlen(buffer), 0);

t'avais effectivement oublié le \n qui est le caractere de fin de ligne.

et si tu veux voir une source d'un bot simple:
http://www.cppfrance.com/codes/BOT-IRC-TOUT-SIMPLE-FAIT-A-L-AIDE-DE-LA-CLASSE-PROSOCK/20596.aspx


allez a+



dimanche 6 novembre 2005 à 08:14:40 | Re : projet bot irc

skotmarud

Réponse acceptée !
comme la dit cosmobob t'as oublier les \n
et ta requete user n'est pas bonne. Pour mieux comprendre jette un coup d'oeil a la rfc de l'irc

sprintf(buffer,"NICK %s\n",nick);
send(sock, buffer, strlen(buffer), 0);
sprintf(buffer,"USER a a a :%s\n",nick);
send(sock, buffer, strlen(buffer), 0);
sprintf(buffer,"JOIN %s\n",channel);
send(sock, buffer, strlen(buffer), 0);

là ça fonctionne :)

dimanche 6 novembre 2005 à 08:23:35 | Re : projet bot irc

skotmarud

Réponse acceptée !
j'ai oublier de dire : telecharge netcat c'est un utilitaire en console qui aide beaucoup pour créer des client/serveur.
par exemple là pour vérifier le probleme dans une console tu fais "nc -v -l -p 6667" pour mettre sur ecoute ton port 6667 et apres avec ton bot tu te connect sur l'ip 127.0.0.1 port 6667 et tu vois tout de suite que ton bot envoie tout en une seule ligne sans retour a+

dimanche 6 novembre 2005 à 10:05:13 | Re : projet bot irc

shadow1779

Membre Club

merci beaucoup a tous pour vos reponses, j'vai y appliquer :)


dimanche 6 novembre 2005 à 10:12:17 | Re : projet bot irc

shadow1779

Membre Club

oups par contre j'ai tout changer :s et ca ne marche toujours pas, connection reussie mais pas les send, j'vous ai reuploadé le fichier source :)


dimanche 6 novembre 2005 à 10:48:13 | Re : projet bot irc

skotmarud

sprintf(buffer,"USER %s . . :%s\n","become_a_bot",nick);

:)

dimanche 6 novembre 2005 à 10:54:02 | Re : projet bot irc

skotmarud

la rfc en français http://www.iprelax.fr/irc/irc_rfcfr.php

pour l'etablissement de connection http://www.iprelax.fr/irc/irc_rfcfr4.php#41

tout est expliqué a+




Cette discussion est classé dans : projet, bot, irc


Répondre à ce message

Sujets en rapport avec ce message

bot irc [ par Nano ] quelqu'un pourait me donner la source d un bot irc simple fait avec visual c++Merci d'avance Programmation d'un bot pour IRC [ par murony ] Bonjour,Voilà j'aimerai créer un bot irc moi même. Je n'ai pas envie d'utiliser un eggdrop et un script tcl, ni avec mIRC, je ne suis pas à l'aise en Question pour bot irc [ par restesouple ] Bonjour,J'ai pris cette source http://www.cppfrance.com/code.aspx?ID=20596 et avec celle -ci qui fonctionne parfaitement, je voudrais savoir comment f Recherche codeur c++ (projet IRC) [ par wineasy ] Bonsoir, J'ai en projet de monter un petit réseau IRC francophone. Je n'ai encore fait aucune publicité pour l'instant car je tiens à ce que tout soi Bot Pour Irc, Probléme pour les commandes [ par oshin ] Chalut tousJ'ai besoin de votre aide car je n'arrive pas à faire en sorte que lorsqu'on écrit sur le salon par ex: !jeux Le bot réponde : Je n'ai pas quel est le prob avec send(); en socket C [ par shadow1779 ] Bonjour,j'ai un petit probleme, je developpe un petit bot irc en C via les socket, j'ai fai le debut ou le programme demande a l'utilisateur quel est J'aimeré faire un bot irc qui marche en mode console , avec vc++ [ par y4r1 ] J'aimeré faire un bot irc qui marche en mode console , avec vc++aidé moi svp pb inclusions VS [ par magic_Nono ] Bjje suis sur un gros projet ou on a fait une modification de fondet maintenant le prog compile si il veutie en fonction de l'ordre ou il integre les bot msn [ par leprov ] salut a tous.bon jai posé une question sur le forum ya pas si longtps, mais jai eu peu de reponses et qu m'ont pas vraiment avancées...bon alors apres shell minimal [ par ledebutantenC ] Bonjour, je suis debutant en C , j'ai un projet à rendre et je ne sais pas par ou commencer...merci de m'aidervoila le lienhttp://www.cmi.univ-mrs.fr/


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.