Galmiza
Messages postés573Date d'inscriptionsamedi 16 novembre 2002StatutMembreDernière intervention 9 avril 20081 20 déc. 2005 à 12:51
Il n'y a pas de bug donc pas d'overflow dans les mémoires que j'ai
allouées, juste des paquets non reçus :(. Je n'ai pas envie de devoir
compiler en debug et encore moins de découper le programme.en 2 pour
faire une partie en debug et l'autre en release.
En debug pas de problème, la fonction recv fonctionne, par contre en release, le programme reste bloqué dessus.
En ajoutant
unsigned long ul = 1;
ioctlsocket(m_Sock, FIONBIO, (unsigned long *) &ul);
pour eviter que la fonction recv soit bloquante le debug recoit une
multitude de paquets 'vides' dont les autres paquets attendus, alors
qu'en release, TOUS les paquets sont 'vides'.
Je programme sous VC++ 6.0 Windows XP Home Edition.
cosmobob
Messages postés700Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention27 janvier 20094 21 déc. 2005 à 10:20
salut
un bug pas reproductible par ceux a qui tu demandes est pas corrigeable par ceux a qui tu demandes.
Copie colle tout ton code, ou bien mets le .rar quelque part ou on puisse y acceder.
Dis toi que si ca marche en debug, mais pas en release ca vient forcément de ton code qui est buggé, et pas d'un mystere de l'univers.
deja ca:
while (1)
{
memset( m_packet, 0, sizeof( m_packet ) ) ;
recv( m_Sock, m_packet, sizeof(m_packet), 0 );
.....
}
c'est moyen (tu testes pas la valeur de retour de recv)
Galmiza
Messages postés573Date d'inscriptionsamedi 16 novembre 2002StatutMembreDernière intervention 9 avril 20081 21 déc. 2005 à 18:52
Ailowe,
Hou que si, c'est reproductible, facilement même, inévitablement malheureusement .
C'est la deuxième fois que j'ai besoin d'inclure un sniffer dans un de
mes projets et c'est aussi la deuxième fois que j'ai le problème, je ne
souviens plus de quelles sources j'ai fait des copier coller mais elles
étaient différentes.
Je n'ai d'ailleurs pas trouvé de sniffer qui fonctionne en release.
C'est évident que ce sont les programmes qui bugge car les fontions
réseaux sont déjà compilées donc ne peuvent être source de cette
différence debug-release.
Mon code (le plus simple) liste dans un report list windows les paquets IP reçus. C'est quasiement le même que celui dont j'ai donné la source, en plus compliqué.
Désolé je n'avais pas trouvé cet exemple en cherchant les sniffers sur cppfrance.
Rassure-toi je n'ai pas accusé les API, juste emis l'hyothèse que mon
compilateur pouvait me jouer des tours (il est instable sur mon PC,
j'avais du le réinstallé car il bloquait pendant le linking 2 fois sur
3). Si, j'ai fini de raconter ma vie.