Précédent   Forum du club des développeurs et IT Pro > C et C++ > C > Réseau
Réseau Forum d'entraide sur la programmation réseau en C
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 31/08/2012, 18h10   #1
michaelvd
Invité de passage
 
Homme Michaël Vandycke
Étudiant
Inscription : décembre 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Homme Michaël Vandycke
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : décembre 2011
Messages : 4
Points : 2
Points : 2
Par défaut Perte du file descriptor

Bonjour et voici mon problème au niveau de mon programme serveur.
Le premier send que vous voyez fonctionne, et les fonctions suivantes font un travail sur un serveur mysql (ca fonctionne aussi). Le dernier send (avec l'envoie de "TEST") reçoit un autre file descriptor, et un message 'bad file descriptor' est envoyé.
Par contre, lorsque je met ce dernier send() avant mon utilisation de classe mysql, ca fonctionne!
En quoi la connection mysql influe-t-elle sur la connection de mon client? comment puis-je éviter ce problème? Merci,

Code :
1
2
3
4
5
6
7
8
9
10
 
                               if(send(new_fd,"Password Correct",16,0) == -1)
                                perror("send");
                                connectMe(&mysql);
                                buf=listMe(&mysql);
                                printf("%s\n",buf);
                                disconnectMe(&mysql);
 
                                if (send(new_fd, "TEST", 5, 0) == -1)
                                        perror("send");
PS: j'utilise la libraire mysqlclient
michaelvd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2012, 16h07   #2
mercyril
Futur Membre du Club
 
Homme
Ingénieur développement logiciels
Inscription : août 2011
Messages : 12
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : août 2011
Messages : 12
Points : 17
Points : 17
Salut,

Là comme ça, impossible à dire.

Cela dépends de ce que tu fais dans tes fonctions et de la déclaration de variables.

Peux poster l'intégralité de ton code ?

Cyrille
mercyril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2012, 10h30   #3
michaelvd
Invité de passage
 
Homme Michaël Vandycke
Étudiant
Inscription : décembre 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Homme Michaël Vandycke
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : décembre 2011
Messages : 4
Points : 2
Points : 2
Voilà je continue mon investigation et voici un peu plus d'infos sur mon problème:

J'utilise des connections classiques de mysql (mysql_close, mysql_real_connect).. et des connections classiques socket. Dans le code ci-dessus le new_fd change. vu que mon serveur n'est pas très occupé, j'en ai déduit que dans le tableau des fichiers ouvert je devrai être à 4. Lorsque je met donc ce nombre dans le dernier send, ca fonctionne non de dieu! Mais comment ce file descriptor change après mes fonctions mysql? j'ai rien fait pour ca!
michaelvd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2012, 11h25   #4
michaelvd
Invité de passage
 
Homme Michaël Vandycke
Étudiant
Inscription : décembre 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Homme Michaël Vandycke
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : décembre 2011
Messages : 4
Points : 2
Points : 2
C'est bon j'ai trouvé, la variable MYSQL * mysql était passée par adresse comme ceci: connectMe(&mysql). Le & provoquait une corruption au niveau du new_fd apparement...
michaelvd est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h57.


 
 
 
 
Partenaires

Hébergement Web