templeofboom
Messages postés41Date d'inscriptionvendredi 19 novembre 2004StatutMembreDernière intervention21 juin 2005
-
11 déc. 2004 à 10:57
memspell
Messages postés4Date d'inscriptionjeudi 21 janvier 2010StatutMembreDernière intervention23 janvier 2010
-
22 janv. 2010 à 00:35
dans le cadre du développement d'une application de socket sous devcpp je me retrouve bizarrement coincé a cause d'une erreur d'allocation mémoire à la création d'une nouvelle instance d'une classe
cliente qui doit effectuer le traitement lié au message reçu.
ma classe cliente recoit en paramètre un entier( descripteur de la socket cliente créé) et une structure de donnée contenant des tableau de taill fixe.
mon code est du style :
void socket_serveur::ecouter()
{
if(listen(sock_serveur,5)==-1) //socket en ecoute avec file d'attente de 5
perror("\nerreur de listen") ;
while(1)
{
longueur_client= sizeof(adresse_client) ;
//fcntl(sock_client,F_SETFL,O_NONBLOCK); //rend le accept non bloquant
if((sock_client = accept(sock_serveur,(struct sockaddr*)&adresse_client,/*(socklen_t*)*/&longueur_client))<0)
{
perror("\nErreur nouvelle socket") ;
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 11 déc. 2004 à 18:02
"est ce que le passage d'une structure en paramètre pose probléme?"
ben moi je passerai plutot un pointeur, mais j'y connais rien aux sockets, ca doit surement poser un pb
______________________
Omnia vincit labor improbus
memspell
Messages postés4Date d'inscriptionjeudi 21 janvier 2010StatutMembreDernière intervention23 janvier 2010 22 janv. 2010 à 00:35
longueur_client= sizeof(adresse_client) ;
//fcntl(sock_client,F_SETFL,O_NONBLOCK); //rend le accept non bloquant
if((sock_client = accept(sock_serveur,(struct sockaddr*)&adresse_client,/
Hello,
Tu fait un sizeof sur la variable... au lieu du type, si tu as fait une allocation dynamique pour allouer adresse_client il est fort probable que l'appel à accept avec la mauvaise taille est corrompu le heap.