[C] bot irc
|
24-09-2012, 22h54
Message : #3
|
|
b0fh
Membre actif Messages : 210 Sujets : 17 Points: 309 Inscription : Jul 2012 |
RE: [c bot] probleme bot en c
Hello,
Le problème est probablement que recv(2) travaille sur des données arbitraires et ne rajoute donc pas le terminateur nul à la fin d'une ligne. Quand un message plus court que le précédent est reçu, il est réécrit par dessus, et strstr ne voit pas la limite entre les deux. Code : read_bytes = recv(sockfd, buf, 255, 0); Note le 255 pour éviter une erreur off-by-one. Ce code n'est pas fiable parce qu'il n'y a aucune garantie qu'une ligne entière soit disponible après un appel à recv(2), meme si ça sera le cas quasiment tout le temps. Pour faire proprement tu devrais avoir une première boucle qui accumule les résultats des appels à recv dans un buffer intermédiaire, cherche les terminateurs \n et déclenche une action le cas échéant, et copie le reste du buffer éventuel au début. Ton implémentation de PING/PONG est incomplète, le PONG est sensé retourner l'argument envoyé avec PING. Le serveur serait en droit de te déconnecter pour ça. Dernièrement, pour tes chaines de caractère constantes, Code : char blah[100] = "foobarbaz"; Code : char blah[] = "foobarbaz"; Code : char *blah = "foobarbaz"; |
|
« Sujet précédent | Sujet suivant »
|
Messages dans ce sujet |
[C] bot irc - par Creepy_p0ney - 24-09-2012, 19h41
RE: [c bot] probleme bot en c - par Ark - 24-09-2012, 22h09
RE: [c bot] probleme bot en c - par b0fh - 24-09-2012, 22h54
|
Utilisateur(s) parcourant ce sujet : 1 visiteur(s)