Bonsoir,
J'ai codé un bot irc brouillon, mais j'ai quelques erreurs une dans le code et une autre qui n'est pas vraiment une erreur. La première est que les informations renvoyées par le serveur me sont affiché bizarrement, j'entends par là qu'il ne sont pas affiché comme leur contenu. Par exemple le serveur m'envoie une phrase, je reçois des caractère bizarre et je distingue quelque mots de la phrase (ça me fait ça depuis que je suis passé sous VS 2005). J'ai donc essayé un autre IDE tel que Dev-cpp, seulement il me retourne une erreur qui se trouve dans le winsock2.h .. (:
Voila pour ce qui est de l'affichage, ce qui est minime.. Mon autre problème est que lorsque je reçois une information venant du serveur je vérifie son contenu, par exemple je vérifie si le message reçu est "PING" et j'envoie "PONG" au serveur pour qu'il sache que je suis toujours connecté et qu'il ne me déconnecte pas. jusque là tout va bien, maintenant j'essaie de détecter un mot dans une phrase et faire en sorte que si celui ci y est, d'envoyer un message sur un salon précis, seulement c'est là que ça coince..
Comme je le dis mon code est un brouillon et sale =/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 #include <stdio.h> #include <string.h> #include <string> #include <stdlib.h> #include <winsock2.h> #pragma comment(lib, "ws2_32.lib") int main() { WSADATA WSAData; WSAStartup(MAKEWORD(2,0), &WSAData); SOCKET sock; SOCKADDR_IN sin; char *buffer = new char[255], nick[] = "NICK squared\r\n", user[] = "USER socketz \"x.com\" \"irc.voila.fr\" :E equal MC squared\r\n", pong[] = "PONG :irc.voila.fr\r\n", join[] = "JOIN #help-scripting\r\n", version[] = "PRIVMSG #help-scripting :testing\r\n"; sock = socket(AF_INET, SOCK_STREAM, 0); sin.sin_addr.s_addr = inet_addr("195.101.94.137"); sin.sin_family = AF_INET; sin.sin_port = htons(6667); connect(sock, (SOCKADDR *)&sin, sizeof(sin)); send(sock,user,strlen(user),0); send(sock,nick,strlen(nick),0); send(sock,join,strlen(join),0); while (1) { memset(buffer,0,sizeof(buffer)); recv(sock, buffer, sizeof(buffer), 0); if (buffer) { printf("%s\n",buffer); if (strstr(buffer,"PING")) { send(sock,pong,strlen(pong),0); } /* c'est à cette ligne que mon problème se situe même si aucune erreur m'est retournée*/ if (strstr(buffer,"testz")) { send(sock,version,strlen(version),0); } } else { closesocket(sock); WSACleanup(); system("PAUSE"); } } return 0; }
Je n'utilise pas encore les threads donc j'ai remplacé par une while infinie. Aucune erreur m'est retournée à la compilation et aucune pendant son utilisation alors que je ne reçois pas le message sur le salon.. Et si une erreur m'est renvoyé par le serveur ce qui se pourrait, ben je ne la vois pas dû à cette affichage pourrit =]
pour mieux comprendre ce dont je parle, pour ce qui est de l'affichage: http://www.picdo.net/Fichiers/fb841f...d9b/erreur.PNG
[edit]
mon problème d'affichage est résolu, je vais maintenant pouvoir regarder ce qu'il ne va pas pour mon message de test
[/edit]
Partager