unrealgun
Messages postés87Date d'inscriptionmardi 16 décembre 2003StatutMembreDernière intervention 4 mars 2008
-
29 déc. 2005 à 16:57
unrealgun
Messages postés87Date d'inscriptionmardi 16 décembre 2003StatutMembreDernière intervention 4 mars 2008
-
30 déc. 2005 à 18:44
Bonjour,
Je suis sous dev-c++ et je fais un programme qui utilise winsock.
J'ai un probleme au niveau de la réception de commandes :
lorsque je recois beaucoup de données simultanément, mon programme crash, sans message d'erreur, il se ferme.
Puisque lorsque le nombre decommandes est trop grand, la dernière commande se retrouve coupée en 2, j'ai décidé de faire ceci :
Je m'explique.
'¦' est mon caractère de séparation, il se trouve a la fin de chaque commande.
Ici, lorsque le dernier caractère n'est pas un caractere de séparation (la derniere commande est incomplète), je stocke donc la 1ere partie de cete commande dans la variable globale TMPWAIT.
A la prochaine reception (lorsque je recois la 2eme partie de la comande), ce systeme recolle la 1ere partie d ela commande a la 2eme ainsi reçue.
Mon problème est que ce système ne fonctionne pas.
Le prog plante lors de la reception de données de taille supérieure à 2000. Il n'y a aucun message d'erreur et le prog se ferme :s.
Si quelqun pouvait m'indiquer comment remédier a ce plantage ou un autre systeme de reception plus fiable, cela m'aiderait onsidérablement.
katsankat
Messages postés571Date d'inscriptionvendredi 30 décembre 2005StatutMembreDernière intervention12 juillet 20123 30 déc. 2005 à 17:51
char buf[4015]; ... en deux messages de plus de 2000 ça devrait poser problème.
Aussi vérifies que tu n' envoie pas de paquet de + de 8195 car c'est un max défini dans winsock2.h (je dis ça comme ça car j'ai pas vu le reste de ton prog).
Bref, utilises des printf() pour connaitre l' état et l' évolution des valeurs de tes variables buf, buff et tmpwait, afin de débugger ton programme. Ceci pour identifier là ou ça plante et quand ça plante.
Note strrchr() défini dans string.h trouve la dernière occurence d'un caractère dans un string.