Besoin d'aide sur les Thread Pour Bot MirC

Résolu
nem02004 Messages postés 47 Date d'inscription vendredi 21 mai 2004 Statut Membre Dernière intervention 23 avril 2007 - 24 juil. 2005 à 08:48
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 - 26 juil. 2005 à 09:47
Bon voila g fai un bot mirc et en fai jaimerai lammener en 3 fois car ca va etre un bot dannimanimation ki sera en 3 pseudo ( ki parleron ensemble totu suel lol ).
Pour cela g besoin des thread ( c mieu ke de recopier la fonction 3 fois et dla renomer ) parcke jV metre des options.
La je suis a bout de force lol G chercher partout des truck sur les threads mais g rien compris. si kelkun pouvai maider ca serai super sympa :$

#include <winsock.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int
connexion_tcp ()
{
SOCKADDR_IN SinDist;
struct hostent *host;
int sock;
int port = 6667;
char serv[20];
sprintf(serv,"irc.voila.fr");
long FinNick2;
time(&FinNick2);
int FinNick = FinNick2;
sock = socket (AF_INET, SOCK_STREAM, 0);
if (sock == -1)
{
perror ("socket");
return sock;
}
SinDist.sin_family = AF_INET;
SinDist.sin_addr.s_addr = inet_addr (serv);
SinDist.sin_port = htons (port);


if (SinDist.sin_addr.s_addr == -1)
{
host = gethostbyname (serv);
if (host == NULL)
{
printf ("Résolution de l'host %s impossible", serv);
return -1;
}


memcpy ((char *) &SinDist.sin_addr.s_addr, host->h_addr,
host->h_length);
}


if (connect (sock, (struct sockaddr *) &SinDist, sizeof (SOCKADDR_IN)) < 0)
{
printf ("Connexion à %s impossible", serv);
return -1;
}
char pseudonick[50];
printf ("Connexion à %s établie\n", serv);
sprintf (pseudonick,"NICK PistachO-%d\n", FinNick);
send (sock, pseudonick, strlen (pseudonick), 0);
send (sock, "USER Pistach LoooOoOOL irc.voila.fr : 1[2•12•1]\n", strlen ("USER Pistach LoooOoOOL irc.voila.fr : 1[2•12•1]\n"), 0);
int taille_recu; //declare la variable: Integer
char msg_recu[1025]; //chaine dans laquelle on va mettre l'info recue ($sockread)
char pong[50];
while (1) //Boucle infinie qui recoit les données
{
taille_recu = recv (sock, msg_recu, 1024, 0);
msg_recu[taille_recu] = 0;
if (strncmp (msg_recu, "PING", 4) == 0) { //Si on recoit un PING on balance le PONG
sprintf (pong, "PONG :%s\n", serv);
send (sock, pong, strlen (pong), 0);
}
if (strstr (msg_recu, ":End of /MOTD command.")) { //le msg arrive: je join le chan
send (sock, "JOIN #TesT\n", strlen ("JOIN #TesT\n"), 0);
}
}
return sock;
}

int main(void)
{
WSADATA Data;
WSAStartup (MAKEWORD (2, 2), &Data);
Debut:
connexion_tcp();
goto Debut;
return 0;
}

4 réponses

nem02004 Messages postés 47 Date d'inscription vendredi 21 mai 2004 Statut Membre Dernière intervention 23 avril 2007
24 juil. 2005 à 16:36
euh g bien telecharger mais jcomprend vraiment rien :/ tu peu me montrer un esemple stp style pour vourir 2 fois ma connecct_tcp en thread pliz
3
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
24 juil. 2005 à 13:27
Pour debuter, il y a quelques sources sur le site qui pourront t'aider, mais ensuite pour bien comprendre, va sur brunews.free.fr et telecharge petzold, et mate le chapitre 20. Si tu ne comprends pas, je pourrai toujours t'aider ;).

+2(p - n)
0
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
25 juil. 2005 à 11:35
Pour faire un thread, tu peux exploiter la lib BOOST::THREAD qui offre une classe 'thread'.

Cordialement,
Xterminhate.
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
26 juil. 2005 à 09:47
0
Rejoignez-nous