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[2121]\n", strlen ("USER Pistach LoooOoOOL irc.voila.fr : 1[2121]\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;
}