BOT IRC : MARCHE SOUS WIN ET SOUS LINUX SANS CHANGEMENT
h4l9000
Messages postés6Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention21 juin 2003
-
13 avril 2003 à 13:03
Alcantornet
Messages postés89Date d'inscriptionmardi 8 février 2005StatutMembreDernière intervention14 novembre 2007
-
23 mai 2006 à 11:23
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Alcantornet
Messages postés89Date d'inscriptionmardi 8 février 2005StatutMembreDernière intervention14 novembre 2007 23 mai 2006 à 11:23
t'as fonction strleft ne sert presqu'à rien...
sprintf(buf_send,IRC_JOIN,buf2+1);
idem que sprintf(buf_send,IRC_JOIN,strleft(buf2,1));
mais il serait judicieux de faire une fonction strleft qui gère les erreur comme décallage trop grand.
Alcantornet
Messages postés89Date d'inscriptionmardi 8 février 2005StatutMembreDernière intervention14 novembre 2007 23 mai 2006 à 11:11
Bon code, juste que tu utilise beaucoup de malloc() mais presqu'aucun free()
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 6 avril 2006 à 20:47
En ce cas, faut-il l'enlever ?
gr0ar
Messages postés4Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention 6 avril 2006 6 avril 2006 à 19:51
Aucun intérêt. Ce code a été posté en 2003, c'était juste une *expérience*, évidemment il n'est absolument pas fonctionnel et ne sert à rien. Juste voir comment coder quelque chose qui compile à la fois sous nux et win, c'est *pédagogique* (mais enfin vu comme il est mal codé, il n'a pas grand intérêt même de cep oint de vue là)
bAzilew
Messages postés23Date d'inscriptionjeudi 16 mars 2006StatutMembreDernière intervention23 mars 2007 6 avril 2006 à 00:19
outre le fait que ce soit portable, au niveau experience utilisateur ou juste codage, qu'est ce qui est plus interessant. ne peut t on pas faire un mix pour eviter de recoder sans cesse l'irc tout en gardant une bonne simplicité d'utilisation, et pourquoi pas a portabilité
MIDIEBOLD
Messages postés5Date d'inscriptionjeudi 3 avril 2003StatutMembreDernière intervention 7 août 2004 13 juil. 2005 à 14:58
bah tu compiles avec quoi ? c au niveau du linkage ke ca foire ? t as mis la lib winsock en link ?
MMm pour le zip jvais le faire ptet un jour :) mais le truc ke ya plusieurs .c (enfin ca change rien) mais bon la ct pour que soit plus simple ! enfin jai testé sous vc++ et devc++ il marche tres bien ainsi ke gcc sous nux :] <<< je pense que le principe c juste comme un simple user qui se connecte au serv donc pas besoin de link
DarkEbola
Messages postés6Date d'inscriptionvendredi 27 juin 2003StatutMembreDernière intervention11 novembre 2005 28 avril 2005 à 23:49
excellente source, je vais la potasser :)
je cherchais justement une source compatible Win/Linux pour pouvoir voir les sockets dans un exemple concret ...
merci a toi !
ptiscripter
Messages postés25Date d'inscriptionmercredi 29 octobre 2003StatutMembreDernière intervention14 mars 2004 30 avril 2004 à 19:58
Salut, juste une petite question:
Pourquoi tu m'est ceci:
for(i=0;i<1000;i++); // c un temps d attente c tout :)
un: Sleep(5000); // pause de 5s :)
c'est mieu non ?
cs_Mephisto_fr
Messages postés1Date d'inscriptionvendredi 23 janvier 2004StatutMembreDernière intervention23 janvier 2004 23 janv. 2004 à 19:11
Tout d'abord je souhaite te remercier GrOar d'avoir mis ton source ici. Je m'en suis inspiré pour faire mon premier bot. J'ai fait plusieurs modif mais j'ai un petit probleme sur une de mes fonctions. Mon probleme est le suivant : je veux faire un bot à qui on donne une liste de fichier a telecharger sur un channel et qui s'occupe de lancer les download les uns apres les autres (j'utilise XDCC pour telecharger les fichiers). Lorsque je tape la commande pour telecharger un fichier sous mirc, je download se lance. Lorsque mon bot tape la commande pour telecharger le fichier, il ne se passe rien.
Est ce que quelqu'un pourait m'eclairer sur le protocole XDCC qu'il faut que je mette en place pour que le download se lance egalement lorsque c 'est mon bot qui fait la demande de telechargement ?
Djoobstil
Messages postés38Date d'inscriptiondimanche 10 août 2003StatutMembreDernière intervention22 mars 2005 13 janv. 2004 à 12:35
Dans VC++ appuis sur les touches alt + F7, tu entrera alors dans les "Settings" de ton projet, click sur l'onglet "C/C++", tu auras un menu deroulant, le premier. Dans ce menu, séléctionne "Precompiled Headers". Ici, click sur "Not using precompiled headers". Puis clock sur OK et recompile. :)
rclsilver02
Messages postés130Date d'inscriptionmercredi 19 mars 2003StatutMembreDernière intervention10 février 2012 6 janv. 2004 à 22:51
Bonjour. Je débute. Je voudrais faire un bot compatible Win/Linux, je suis tombé sur cette source. Je possède Visual Studio C++ 6.0. J'ai inseré le code dans un .c que j ai mis dans un Work Space dans Source File. J'ai ajouté la lib wsock32.lib comme l'a indiqué gr0ar. Mais quand je veux compiler, ça me met cette erreur : "c:\program files\microsoft visual studio\myprojects\bot irc test\main.c(461) : fatal error C1010: unexpected end of file while looking for precompiled header directive". J'ai essayé d'ajouter "#pragma comment(lib, "wsock32.lib")" apres l'include de winsock.h, comme disait melnofil, mais ça me fait pareil. D'où ça vient ? Que me conseillez-vous ? Hellllllllllllllp :)))
Djoobstil
Messages postés38Date d'inscriptiondimanche 10 août 2003StatutMembreDernière intervention22 mars 2005 2 janv. 2004 à 07:50
ça utilise quoi comme socket un service ? :X
cs_Melnofil
Messages postés71Date d'inscriptiondimanche 23 juin 2002StatutMembreDernière intervention 1 février 2008 24 nov. 2003 à 15:03
Djoobbstil : Plutôt que d'utiliser un sleep en fesant de la bidouille, il vaut mieux utiliser les sockets non bloquant, avec un délai d'attente de 0 (ainsi si le programme n'a rien recu il sort imédiatement).
Si tu n'arrive pas a faire un socket non-bloquant avec l'adresse que j'ai filé, c'est qu'une légère erreur c'est glissée dans la page web, il fait pas lui passer un timeout null (ca fait un socket bloquant !), mais un timeout initialisé a 0, 0. Pour plus d'infos, regarde à select() dans la msdn de windaube, c la que j'ai trouvé l'erreur.
Djoobstil
Messages postés38Date d'inscriptiondimanche 10 août 2003StatutMembreDernière intervention22 mars 2005 9 nov. 2003 à 00:01
c'est bon j'ai trouvé,
il sufisait de rajouter un Sleep(1); a la fin de la while
" while(retval == 0) "
de la fonction irc_shell,
juste après le
" else
{
}"
Djoobstil
Messages postés38Date d'inscriptiondimanche 10 août 2003StatutMembreDernière intervention22 mars 2005 7 nov. 2003 à 17:50
Qelqu'un saurait comment eviter de monopoliser tout le CPU ?
cs_Melnofil
Messages postés71Date d'inscriptiondimanche 23 juin 2002StatutMembreDernière intervention 1 février 2008 5 nov. 2003 à 17:58
Pour tous ceux qui veulent débuter les sockets, dans mes fouilles j'ai trouvé les perles rares : ^_^
Le premier c pour apprendre super facilement a faire un client ou un serveur : http://c.developpez.com/WalrusSock/ Le deuxième à voir absolument, explique comment utiliser select() pour faire des stockets non-bloquants : http://www.progzone.free.fr/reseau/socket/sockasync.html
cs_Melnofil
Messages postés71Date d'inscriptiondimanche 23 juin 2002StatutMembreDernière intervention 1 février 2008 5 nov. 2003 à 14:32
J'ai eu quelques petites erreurs sous VC++, les voici :
- Pour tout les problèmes de linkage sous windaube, sous l'include de winsock.h il manque la ligne suivante (qui sert a lier la library) : #pragma comment(lib, "wsock32.lib")
- malloc() non déclaré <== ajouter #include <malloc.h>
- atoi() non déclaré <== #include <stdlib.h>
- "Warning '<' : signed/unsigned mismatch" dans la fonction strleft() <== mettez i en unsigned int, la fonction marche toujours et le warning disparaît.
DuncanIdaho
Messages postés98Date d'inscriptionmardi 1 janvier 2002StatutMembreDernière intervention12 février 2008 11 sept. 2003 à 15:03
:S T pourrais mettre un zip avec le prog fait ? je debute avec le C++ :(
D1m3x
Messages postés402Date d'inscriptionsamedi 28 décembre 2002StatutMembreDernière intervention21 juillet 20051 1 sept. 2003 à 23:58
slt,
seul petite faute:
/* includes de windows */
#ifdef WIN32
#include <winsock.h>
typedef unsigned int u_int32_t; /* utilisé par linux mais non défini dans winsock.h */
/* les includes de linux */
#else
#include
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/types.h>
#define SOCKET_ERROR (-1) /* défini dans winsock.h */
typedef struct sockaddr_in SOCKADDR_IN; /* idem */
#endif
tu as mis /* include de linux */ alors kil exist encor dotre OS tel ke MACOS, Lindows et tt ça, donc le #else ne sera pas forcement linux, donc ce ki veut dire ke kan qq1 etant sous MACOS compile ce prog il incluera egalement les headers de 'linux' ;) mais bon ce n'est pas un gros pb puiske tu mensionne bien : pour win et linux ;)
et puis en passant par là qq1 serait me dire kel est le define de linux? :
WIN32 -> windobe
MACOS-> Mac os :)
DEBUG -> mode debug
ez pi ien a encor plein si vous pouviez me donner celui pour linux svp :)
merci d'avance ;)
cs_skisoo
Messages postés1Date d'inscriptionlundi 7 juillet 2003StatutMembreDernière intervention13 juillet 2003 13 juil. 2003 à 22:26
idem ça suce toutes les ressources CPU
cs_ExTAS
Messages postés8Date d'inscriptiondimanche 2 février 2003StatutMembreDernière intervention14 juillet 2003 8 juil. 2003 à 16:42
pas mal ta source le seul petit pb c que sous win en tt ca ca muse 90-100% du proc C UN PE UN GRO pb lol
(jtourne sous xp avec amdxp1900+ ... alors ca vien pas de mon pc...)
gr0ar
Messages postés4Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention 6 avril 2006 19 avril 2003 à 22:13
Bah si je viens de réessayer ! un problème de version de libc ou de gcc ?
regarde le screenshot ke jai pris !
http://cppfrance.com/imgs/source/cpp1693.jpg tu vois ici kil marche parfaitement !
dis moi les erreurs ke tu vois !
GRoAR...
Frostizz
Messages postés39Date d'inscriptionjeudi 30 août 2001StatutMembreDernière intervention23 janvier 2005 19 avril 2003 à 21:29
Sous Linux sa compile pas !
gr0ar
Messages postés4Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention 6 avril 2006 15 avril 2003 à 01:20
sous win fo juste linker la lib wsock32 (libwsock32.a je crois sous devc++,wsock32.lib sous vc++ mais je suis plus sur)
yafuka
Messages postés236Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention18 juillet 20061 15 avril 2003 à 00:10
mettre koi dans les lib ?
Frostizz
Messages postés39Date d'inscriptionjeudi 30 août 2001StatutMembreDernière intervention23 janvier 2005 14 avril 2003 à 22:10
c'est kil faut mettre dans les lib sous win32 ?
gr0ar
Messages postés4Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention 6 avril 2006 14 avril 2003 à 21:30
bah tu compiles avec quoi ? c au niveau du linkage ke ca foire ? t as mis la lib winsock en link ?
MMm pour le zip jvais le faire ptet un jour :) mais le truc ke ya plusieurs .c (enfin ca change rien) mais bon la ct pour que soit plus simple ! enfin jai testé sous vc++ et devc++ il marche tres bien ainsi ke gcc sous nux :]
yafuka
Messages postés236Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention18 juillet 20061 14 avril 2003 à 20:07
il y a plein d'erreur au niveau de l edition des liens . J arrive pas a compiler. :(
yafuka
Messages postés236Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention18 juillet 20061 14 avril 2003 à 20:00
tu pourrais mettre le .h et le .c en zip sur le serveur ;)
h4l9000
Messages postés6Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention21 juin 2003 13 avril 2003 à 13:03
:: ouaou, un très bon exemple sous telnet :) merci groar ;) ca va bcp m'aider dans la realisation d'un client irc, car il s'agit du meme principe.
23 mai 2006 à 11:23
sprintf(buf_send,IRC_JOIN,buf2+1);
idem que sprintf(buf_send,IRC_JOIN,strleft(buf2,1));
mais il serait judicieux de faire une fonction strleft qui gère les erreur comme décallage trop grand.
23 mai 2006 à 11:11
6 avril 2006 à 20:47
6 avril 2006 à 19:51
6 avril 2006 à 00:19
outre le fait que ce soit portable, au niveau experience utilisateur ou juste codage, qu'est ce qui est plus interessant. ne peut t on pas faire un mix pour eviter de recoder sans cesse l'irc tout en gardant une bonne simplicité d'utilisation, et pourquoi pas a portabilité
13 juil. 2005 à 14:58
MMm pour le zip jvais le faire ptet un jour :) mais le truc ke ya plusieurs .c (enfin ca change rien) mais bon la ct pour que soit plus simple ! enfin jai testé sous vc++ et devc++ il marche tres bien ainsi ke gcc sous nux :] <<< je pense que le principe c juste comme un simple user qui se connecte au serv donc pas besoin de link
28 avril 2005 à 23:49
je cherchais justement une source compatible Win/Linux pour pouvoir voir les sockets dans un exemple concret ...
merci a toi !
30 avril 2004 à 19:58
Pourquoi tu m'est ceci:
for(i=0;i<1000;i++); // c un temps d attente c tout :)
un: Sleep(5000); // pause de 5s :)
c'est mieu non ?
23 janv. 2004 à 19:11
Est ce que quelqu'un pourait m'eclairer sur le protocole XDCC qu'il faut que je mette en place pour que le download se lance egalement lorsque c 'est mon bot qui fait la demande de telechargement ?
13 janv. 2004 à 12:35
6 janv. 2004 à 22:51
2 janv. 2004 à 07:50
24 nov. 2003 à 15:03
Si tu n'arrive pas a faire un socket non-bloquant avec l'adresse que j'ai filé, c'est qu'une légère erreur c'est glissée dans la page web, il fait pas lui passer un timeout null (ca fait un socket bloquant !), mais un timeout initialisé a 0, 0. Pour plus d'infos, regarde à select() dans la msdn de windaube, c la que j'ai trouvé l'erreur.
9 nov. 2003 à 00:01
il sufisait de rajouter un Sleep(1); a la fin de la while
" while(retval == 0) "
de la fonction irc_shell,
juste après le
" else
{
}"
ça donne:
Sleep(1);
}
#ifdef WIN32
closesocket(sock1); // facon win
#else
close(sock1); // facon nux
#endif
return retval;
}
(j'ai été assé precis j'éspère ;p)
7 nov. 2003 à 17:50
5 nov. 2003 à 17:58
Le premier c pour apprendre super facilement a faire un client ou un serveur : http://c.developpez.com/WalrusSock/
Le deuxième à voir absolument, explique comment utiliser select() pour faire des stockets non-bloquants : http://www.progzone.free.fr/reseau/socket/sockasync.html
5 nov. 2003 à 14:32
- Pour tout les problèmes de linkage sous windaube, sous l'include de winsock.h il manque la ligne suivante (qui sert a lier la library) : #pragma comment(lib, "wsock32.lib")
- malloc() non déclaré <== ajouter #include <malloc.h>
- atoi() non déclaré <== #include <stdlib.h>
- "Warning '<' : signed/unsigned mismatch" dans la fonction strleft() <== mettez i en unsigned int, la fonction marche toujours et le warning disparaît.
11 sept. 2003 à 15:03
1 sept. 2003 à 23:58
seul petite faute:
/* includes de windows */
#ifdef WIN32
#include <winsock.h>
typedef unsigned int u_int32_t; /* utilisé par linux mais non défini dans winsock.h */
/* les includes de linux */
#else
#include
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/types.h>
#define SOCKET_ERROR (-1) /* défini dans winsock.h */
typedef struct sockaddr_in SOCKADDR_IN; /* idem */
#endif
tu as mis /* include de linux */ alors kil exist encor dotre OS tel ke MACOS, Lindows et tt ça, donc le #else ne sera pas forcement linux, donc ce ki veut dire ke kan qq1 etant sous MACOS compile ce prog il incluera egalement les headers de 'linux' ;) mais bon ce n'est pas un gros pb puiske tu mensionne bien : pour win et linux ;)
et puis en passant par là qq1 serait me dire kel est le define de linux? :
WIN32 -> windobe
MACOS-> Mac os :)
DEBUG -> mode debug
ez pi ien a encor plein si vous pouviez me donner celui pour linux svp :)
merci d'avance ;)
13 juil. 2003 à 22:26
8 juil. 2003 à 16:42
(jtourne sous xp avec amdxp1900+ ... alors ca vien pas de mon pc...)
19 avril 2003 à 22:13
regarde le screenshot ke jai pris !
http://cppfrance.com/imgs/source/cpp1693.jpg
tu vois ici kil marche parfaitement !
dis moi les erreurs ke tu vois !
GRoAR...
19 avril 2003 à 21:29
15 avril 2003 à 01:20
15 avril 2003 à 00:10
14 avril 2003 à 22:10
14 avril 2003 à 21:30
MMm pour le zip jvais le faire ptet un jour :) mais le truc ke ya plusieurs .c (enfin ca change rien) mais bon la ct pour que soit plus simple ! enfin jai testé sous vc++ et devc++ il marche tres bien ainsi ke gcc sous nux :]
14 avril 2003 à 20:07
14 avril 2003 à 20:00
13 avril 2003 à 13:03