BOT IRC TOUT SIMPLE, FAIT A L'AIDE DE LA CLASSE PROSOCK
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 2009
-
19 févr. 2004 à 22:24
AiSpirit
Messages postés11Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention10 novembre 2006
-
21 août 2006 à 14:09
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
AiSpirit
Messages postés11Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention10 novembre 2006 21 août 2006 à 14:09
Je n'ai pas essayé, mais tu pourrais regarder de ce coté :
dans IrcProc,
case SOCKREAD_ERROR:
{
printf("erreur de recv, le socket est automatiquement fermé\n");
break;
}
Tu pourrais tout simplement gérée ici l'erreur de close du à la deconnection Internet pour faire une relance du programme ?
j'espère que cette piste te servira ..
tagboys
Messages postés42Date d'inscriptionlundi 28 avril 2003StatutMembreDernière intervention28 mars 2014 20 août 2006 à 04:17
humm j'ai chercher a trouver l'evenement qui fait qui start le bot mais bon j'ai pas rien trouver.
mon problemme est que je suis en 56k puis ma connection deconnect a tout les 15-20 min donc je doit tjs restarter le bot mais je suis pas tjs devant mon ordi allors aurait t'il une facon de le remettre auto reconnect svp merci d'avance :)
TrueCluster
Messages postés1Date d'inscriptiondimanche 5 mars 2006StatutMembreDernière intervention 5 mars 2006 5 mars 2006 à 00:25
En tout cas c'est une superbe base pour develloper dessus, je vais m'y atteller :)
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 7 oct. 2005 à 12:27
une fois que t'as fait un sockclose, c'est sur que le port sur lequel ca ecoutait est libéré .. ca ferme le thread qui ecoutait egalement, donc il reste plus rien du socket du tout en background.
AiSpirit
Messages postés11Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention10 novembre 2006 4 oct. 2005 à 23:06
j'entendais bien sûr de le rendre inactif (par exemple par s_accept.SockClose(); et s_listen.SockClose(); ...
mais bon, c'est juste pour libérer le port 113 au cas où...
De toute façon, ce n'est pas ce socket qui va consommer la maj. partie des ressources, donc pas important.
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 4 oct. 2005 à 10:11
salut,
je sais pas ce que t'appelles supprimer, mais s'il est inactif, il n'y aura plus rien en fond qui est du à lui.
a+
AiSpirit
Messages postés11Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention10 novembre 2006 13 sept. 2005 à 15:05
en fait, port 113 : identification :p.
Donc pas besoin de répondre à ma stupd... question sauf que : peut on supprimer ce socket (s_accept) après l'identification ou faut-il toujours l'avoir en fond ?
Merci pour cette source très claire
AiSpirit
Messages postés11Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention10 novembre 2006 13 sept. 2005 à 14:05
juste une petite question svp :
que font exactement les fonctions IrcProc et proc_ircid ?
quand telle ou telle est appelée ? je ne voit pas très bien car les 2 possède par exemple ON_SOCKREADLN mais pour proc_ircid, je ne voit pas très bien ce qu'elle fait.
Merci.
patemino
Messages postés80Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention22 mars 2007 14 juil. 2005 à 14:21
Oki merci ça mrche bien ... Très bien ...
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 14 juil. 2005 à 01:41
salut,
comme pour chaque source ou il y a des sockets, pour compiler ca sous dev-cpp, il faut que tu rajoutes libws2_32.a (winsock2) ou bien libwsock32.a (winsock 1) dans les options d'édition de liens de ton projet devcpp
patemino
Messages postés80Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention22 mars 2007 13 juil. 2005 à 01:08
Tu utilises WinSowks 1 ou 2 ?
patemino
Messages postés80Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention22 mars 2007 13 juil. 2005 à 01:06
Désolé pour le doublon et la taille du com' ...
Navré !
patemino
Messages postés80Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention22 mars 2007 13 juil. 2005 à 01:05
Petite série d'erreur sous DevCpp (en ayant suivi tes conseils):
prosock.cpp: In function `DWORD _PSThreadRecv(void*)':
prosock.cpp:136: warning: comparison between signed and unsigned integer expressions
token.cpp:40:2: warning: no newline at end of file
prosock.o(.text+0x106):prosock.cpp: undefined reference to `WSAStartup@8'
prosock.o(.text+0x216):prosock.cpp: undefined reference to `WSAStartup@8'
prosock.o(.text+0x328):prosock.cpp: undefined reference to `WSAStartup@8'
prosock.o(.text+0x43a):prosock.cpp: undefined reference to `WSAStartup@8'
prosock.o(.text+0x4b6):prosock.cpp: undefined reference to `recv@16'
prosock.o(.text+0x6c0):prosock.cpp: undefined reference to `gethostbyname@4'
prosock.o(.text+0x749):prosock.cpp: undefined reference to `socket@12'
prosock.o(.text+0x763):prosock.cpp: undefined reference to `htons@4'
prosock.o(.text+0x79a):prosock.cpp: undefined reference to `inet_ntoa@4'
prosock.o(.text+0x7e0):prosock.cpp: undefined reference to `connect@12'
prosock.o(.text+0x9ec):prosock.cpp: undefined reference to `send@16'
prosock.o(.text+0xa54):prosock.cpp: undefined reference to `send@16'
prosock.o(.text+0xb14):prosock.cpp: undefined reference to `send@16'
prosock.o(.text+0xbcb):prosock.cpp: undefined reference to `shutdown@8'
prosock.o(.text+0xbdc):prosock.cpp: undefined reference to `closesocket@4'
prosock.o(.text+0xcd5):prosock.cpp: undefined reference to `socket@12'
prosock.o(.text+0xd61):prosock.cpp: undefined reference to `htons@4'
prosock.o(.text+0xd73):prosock.cpp: undefined reference to `inet_ntoa@4'
prosock.o(.text+0xdb9):prosock.cpp: undefined reference to `bind@12'
prosock.o(.text+0xe25):prosock.cpp: undefined reference to `listen@8'
prosock.o(.text+0xe84):prosock.cpp: undefined reference to `select@20'
prosock.o(.text+0x1090):prosock.cpp: undefined reference to `accept@12'
prosock.o(.text+0x10f2):prosock.cpp: undefined reference to `getpeername@12'
prosock.o(.text+0x1105):prosock.cpp: undefined reference to `inet_ntoa@4'
collect2: ld returned 1 exit status
Un peu d'aide STP ...
BumpMANN
Messages postés330Date d'inscriptionjeudi 22 mai 2003StatutMembreDernière intervention26 janvier 2009 11 févr. 2005 à 22:12
WAAAW Exellent !!! very good zand zinteresting ;)
c'est rare que je me fasse chier a mettre mon login et pass dans cppfrance mais la chapeau bas ! ;)
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 7 déc. 2004 à 19:21
salut,
remplace void main() par int main(int argc, char** argv);
(et rajoute un return 0; à la fin du main)
si t'as un compilateur qui gere pas les .lib (comme dev cpp ou autre); tu dois mettre ProSock.cpp dans ton projet, et donc tu dois dans ce fichier enlever les /* */ (tout le contenu du fichier est commenté par défaut je crois)
a++ ;)
y4r1
Messages postés5Date d'inscriptionjeudi 4 novembre 2004StatutMembreDernière intervention30 avril 2009 4 déc. 2004 à 00:48
j'aimeré bien compilé votre source , mais cet erreur
ché pa mon compilateur n'accepte pa void main , quesque je dois faire help me plz , merci
"178 C:\Documents and Settings\Meriem\Bureau\code source\bot\b1\botirc\main.cpp
`main'"
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 20 févr. 2004 à 01:10
ué en attendant jvais essayer de modifier la classe pour rendre toutes les fonctions non bloquantes (SockOpen et SockWrite le sont = elles ont pas un temps d'execution tres court vu que ca dépend de la connection). jvais ptet rajouter aussi un champ error qui décrit plus précisement l'erreur ds le cas ou yen a eu une. si t'as des idées, de trucs qui devraient etre implémenté en+, hésite pas mle dire ;)
Cyberboy2054
Messages postés173Date d'inscriptionjeudi 20 décembre 2001StatutMembreDernière intervention22 août 2008 20 févr. 2004 à 00:18
Cette librairie est stupéfiante.
Tu devrais lui faire une documentation (cf DOxygen) et y joindre des exemples tels que celui la, paske la je vois pas comment on pourrait faire plus simple tout en etant aussi efficace.
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 19 févr. 2004 à 22:24
21 août 2006 à 14:09
dans IrcProc,
case SOCKREAD_ERROR:
{
printf("erreur de recv, le socket est automatiquement fermé\n");
break;
}
Tu pourrais tout simplement gérée ici l'erreur de close du à la deconnection Internet pour faire une relance du programme ?
j'espère que cette piste te servira ..
20 août 2006 à 04:17
mon problemme est que je suis en 56k puis ma connection deconnect a tout les 15-20 min donc je doit tjs restarter le bot mais je suis pas tjs devant mon ordi allors aurait t'il une facon de le remettre auto reconnect svp merci d'avance :)
5 mars 2006 à 00:25
7 oct. 2005 à 12:27
4 oct. 2005 à 23:06
mais bon, c'est juste pour libérer le port 113 au cas où...
De toute façon, ce n'est pas ce socket qui va consommer la maj. partie des ressources, donc pas important.
4 oct. 2005 à 10:11
je sais pas ce que t'appelles supprimer, mais s'il est inactif, il n'y aura plus rien en fond qui est du à lui.
a+
13 sept. 2005 à 15:05
Donc pas besoin de répondre à ma stupd... question sauf que : peut on supprimer ce socket (s_accept) après l'identification ou faut-il toujours l'avoir en fond ?
Merci pour cette source très claire
13 sept. 2005 à 14:05
que font exactement les fonctions IrcProc et proc_ircid ?
quand telle ou telle est appelée ? je ne voit pas très bien car les 2 possède par exemple ON_SOCKREADLN mais pour proc_ircid, je ne voit pas très bien ce qu'elle fait.
Merci.
14 juil. 2005 à 14:21
14 juil. 2005 à 01:41
comme pour chaque source ou il y a des sockets, pour compiler ca sous dev-cpp, il faut que tu rajoutes libws2_32.a (winsock2) ou bien libwsock32.a (winsock 1) dans les options d'édition de liens de ton projet devcpp
13 juil. 2005 à 01:08
13 juil. 2005 à 01:06
Navré !
13 juil. 2005 à 01:05
prosock.cpp: In function `DWORD _PSThreadRecv(void*)':
prosock.cpp:136: warning: comparison between signed and unsigned integer expressions
token.cpp:40:2: warning: no newline at end of file
prosock.o(.text+0x106):prosock.cpp: undefined reference to `WSAStartup@8'
prosock.o(.text+0x216):prosock.cpp: undefined reference to `WSAStartup@8'
prosock.o(.text+0x328):prosock.cpp: undefined reference to `WSAStartup@8'
prosock.o(.text+0x43a):prosock.cpp: undefined reference to `WSAStartup@8'
prosock.o(.text+0x4b6):prosock.cpp: undefined reference to `recv@16'
prosock.o(.text+0x6c0):prosock.cpp: undefined reference to `gethostbyname@4'
prosock.o(.text+0x749):prosock.cpp: undefined reference to `socket@12'
prosock.o(.text+0x763):prosock.cpp: undefined reference to `htons@4'
prosock.o(.text+0x79a):prosock.cpp: undefined reference to `inet_ntoa@4'
prosock.o(.text+0x7e0):prosock.cpp: undefined reference to `connect@12'
prosock.o(.text+0x9ec):prosock.cpp: undefined reference to `send@16'
prosock.o(.text+0xa54):prosock.cpp: undefined reference to `send@16'
prosock.o(.text+0xb14):prosock.cpp: undefined reference to `send@16'
prosock.o(.text+0xbcb):prosock.cpp: undefined reference to `shutdown@8'
prosock.o(.text+0xbdc):prosock.cpp: undefined reference to `closesocket@4'
prosock.o(.text+0xcd5):prosock.cpp: undefined reference to `socket@12'
prosock.o(.text+0xd61):prosock.cpp: undefined reference to `htons@4'
prosock.o(.text+0xd73):prosock.cpp: undefined reference to `inet_ntoa@4'
prosock.o(.text+0xdb9):prosock.cpp: undefined reference to `bind@12'
prosock.o(.text+0xe25):prosock.cpp: undefined reference to `listen@8'
prosock.o(.text+0xe84):prosock.cpp: undefined reference to `select@20'
prosock.o(.text+0x1090):prosock.cpp: undefined reference to `accept@12'
prosock.o(.text+0x10f2):prosock.cpp: undefined reference to `getpeername@12'
prosock.o(.text+0x1105):prosock.cpp: undefined reference to `inet_ntoa@4'
collect2: ld returned 1 exit status
Un peu d'aide STP ...
11 févr. 2005 à 22:12
c'est rare que je me fasse chier a mettre mon login et pass dans cppfrance mais la chapeau bas ! ;)
7 déc. 2004 à 19:21
remplace void main() par int main(int argc, char** argv);
(et rajoute un return 0; à la fin du main)
si t'as un compilateur qui gere pas les .lib (comme dev cpp ou autre); tu dois mettre ProSock.cpp dans ton projet, et donc tu dois dans ce fichier enlever les /* */ (tout le contenu du fichier est commenté par défaut je crois)
a++ ;)
4 déc. 2004 à 00:48
ché pa mon compilateur n'accepte pa void main , quesque je dois faire help me plz , merci
"178 C:\Documents and Settings\Meriem\Bureau\code source\bot\b1\botirc\main.cpp
`main'"
20 févr. 2004 à 01:10
20 févr. 2004 à 00:18
Tu devrais lui faire une documentation (cf DOxygen) et y joindre des exemples tels que celui la, paske la je vois pas comment on pourrait faire plus simple tout en etant aussi efficace.
19 févr. 2004 à 22:24