BOT IRC TOUT SIMPLE, FAIT A L'AIDE DE LA CLASSE PROSOCK

cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 - 19 févr. 2004 à 22:24
AiSpirit Messages postés 11 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 10 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.

https://codes-sources.commentcamarche.net/source/20596-bot-irc-tout-simple-fait-a-l-aide-de-la-classe-prosock

AiSpirit Messages postés 11 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 10 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és 42 Date d'inscription lundi 28 avril 2003 Statut Membre Dernière intervention 28 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és 1 Date d'inscription dimanche 5 mars 2006 Statut Membre Derniè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és 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
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és 11 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 10 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és 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
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és 11 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 10 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és 11 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 10 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és 80 Date d'inscription lundi 28 juillet 2003 Statut Membre Dernière intervention 22 mars 2007
14 juil. 2005 à 14:21
Oki merci ça mrche bien ... Très bien ...
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
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és 80 Date d'inscription lundi 28 juillet 2003 Statut Membre Dernière intervention 22 mars 2007
13 juil. 2005 à 01:08
Tu utilises WinSowks 1 ou 2 ?
patemino Messages postés 80 Date d'inscription lundi 28 juillet 2003 Statut Membre Dernière intervention 22 mars 2007
13 juil. 2005 à 01:06
Désolé pour le doublon et la taille du com' ...
Navré !
patemino Messages postés 80 Date d'inscription lundi 28 juillet 2003 Statut Membre Dernière intervention 22 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és 330 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 26 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és 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
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és 5 Date d'inscription jeudi 4 novembre 2004 Statut Membre Dernière intervention 30 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és 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
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és 173 Date d'inscription jeudi 20 décembre 2001 Statut Membre Dernière intervention 22 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és 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
19 févr. 2004 à 22:24
enjoy ;)
Rejoignez-nous