electron159
Messages postés10Date d'inscriptionmercredi 21 février 2007StatutMembreDernière intervention27 mai 2007
-
23 mai 2007 à 07:34
electron159
Messages postés10Date d'inscriptionmercredi 21 février 2007StatutMembreDernière intervention27 mai 2007
-
24 mai 2007 à 14:06
Bonjour,
je suis sous visual studio, mode console.
j'ai essayé d'adapter un client pop3 linux pour qu'il tourne sous windows. Mais, j'ai une exception, alors que je n'ai pas d'erreur :
Exception non gérée à 0x00411507 dans pop3.exe : 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x0000000a.
J'ai regardé du côté des pointeurs, mais je n'ai pas trouvé l'erreur.
Savez-vous d'où peut provenir cette exception?
Merci de votre aide,
Alex.
Voici le code:
#include
<stdio.h>#include
<stdlib.h>#include
<errno.h>#include
<string.h>#include
<winsock2.h>#pragma
comment (
lib ,
"WS2_32.lib")
#pragma
comment(
lib,
"setupapi.LIB")
#define
PACKET_SIZE 1024
int
writen(
int fd,
char *ptr,
int n);
int
readn(
int fd,
char *ptr,
int n);
int
test_OK(
char *buf,
int do_exit);
char
*server_name =
"pop.wanadoo.fr";
unsigned
short server_port=110;
char
*user=
"test@wanadoo.fr";
char
*pass=
"mdptest";
int
to_server_socket = -1;
int
main (
int argc,
char *argv[]){
struct
sockaddr_in serverSockAddr;
/* addresse de la socket */struct
hostent *serverHostEnt;
/* description du host serveur */unsigned
long hostAddr;
/* addr du serveur */unsigned
char bufw[PACKET_SIZE+1];
unsigned
char bufr[PACKET_SIZE+1];
unsigned
char list[PACKET_SIZE+1];
int
n, msg, index, retry = 4;SecureZeroMemory(&serverSockAddr,
katsankat
Messages postés571Date d'inscriptionvendredi 30 décembre 2005StatutMembreDernière intervention12 juillet 20123 24 mai 2007 à 08:09
Salut,
Pas super cette source. Réserver 3 fois 1025 octets c'est pas un peu beaucoup? De plus tous ces ZeroMemory font perdre plus de temps qu'autre chose. L'espace est réservé: tu mets 0 à la fin de ce qui t'intéresse et basta.
Les fonctions readn() et writen() sont inutiles: rien ne sert de ré-écrire recv() et send(). En effet ces fonctions à vertu pédagogique proviennent des travaux de Richard Stevens, censées montrer l'utilisation des primitives read et write.
Test_OK() je la trouve également très lourde.
Ajoutez à celà aucune vérification d'erreur, conclusion: poubelle. Même pas besoin de perdre son temps à le débuguer ;) Il y a des sources valables sur cppfrance... Qui utilisent le type SOCKET sur windows.
I can break the rules too, goodbye.
electron159
Messages postés10Date d'inscriptionmercredi 21 février 2007StatutMembreDernière intervention27 mai 2007 24 mai 2007 à 14:06
Et concrètement, d'où vient cette errreur : Exception non gérée à 0x00411507 dans pop3.exe : 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x0000000a ? :d