Bonjour à tous,
Voilà je développe sur VC++ 6.0 en MFC.
J'utilise l'API mysql++.
Mon programme à l'appui sur un bouton utilise une méthode qui crée une Socket Serveur qui se met à l'écoute d'un poste distant (appelé Superviseur). Lorsque le message est reçu la méthode envoie comme résultat une chaîne DataPacket qui est utilisé dans une autre méthode pour récupérer un "cycle" (un ensemble de valeurs) grâce à des requêtes SQL :
SocketServeur :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
CString C_Serveur::ServerConnection(int iListenPort)
{
//fonction serveur
SocketObject ServerSocketObject ;
SocketObject ClientSocketObject ;
char DataPacket[128] ; // Paquet de données à recevoir
int iBytesReceived ; // # d'octets reçus
// tentative de lancement du serveur
if (ServerSocketObject.Bind(iListenPort))
{
AfxMessageBox("Tentative d'écoute sur le port");
// Ecoute sur le port
ServerSocketObject.Listen();
// Acceptation de connexion
ServerSocketObject.Accept(ClientSocketObject);
// Reception de données
iBytesReceived = ClientSocketObject.Recv(DataPacket, 128, 0);
// char* nom_operateur ;
// strcpy (nom_operateur, nom_BDD) ;
// iBytesReceived = ClientSocketObject.Send(nom_operateur, 128, 0);
}
else
{
AfxMessageBox("<Serveur> : Connexion impossible") ;
}
CString reponse;
ServerSocketObject.Disconnect();
ClientSocketObject.Disconnect();
reponse.Format("%s", DataPacket);
return reponse ;
} |
la fonction recup_cycle utilise seulement des :
- mysql_real_connect
- mysql_close
- mysql_query
Mon problème :
Les deux méthodes ne marchent pas entre elles :
Lorsque j'utilise la méthode recup_cycle (MySQL) seul, elle marche niquel
Lorsque j'utilise la Socket Server seul, elle marche niquel
Les deux foirent, pas à la compilation mais à l'exécution, lorsque j'ai crée ma Socket et que je fais appelle aux fonctions sql, il me dis que je n'ai pas de BDD :
L'instruction à "0x10006db5" emploie l'adresse mémoire "0x00000014". La mémoire ne peut pas être "read".
Et quand je lance le Debugger il me met
Unhandled exception in TabCtrl.exe (LIBMYSQL.DLL) : 0xC0000005: Access Violation.
Voilà si vous avez une idée 8)
Partager