programmation socket avec QT

programmation socket avec QT - C++ - Programmation

Marsh Posté le 06-05-2004 à 10:29:58    

Bonjour à tous
 
J'essai de coder un client sous Linux avec la bibliotheque QT de Trolltech. J'utilise la classe QSocketDevice qui permet de créer une socket avec les API
 
J'arrive à me connecter au serveur et a lui envoyé un message mais dès que je sors de ma méthode qui me permet d'envoyer des données sur la socket je reçois un message SEGMENTATION FAULT.
 
Merci pour celui ou celle qui pourra m'aider
 
Voici mon code pour ma méthode d'envoi de données sur la socket
void Client::Envoyer_Trame_Credit(){
        // write to the server
        int nb_octects_ecrit ;
        int longueur_trame = strlen(trame_cryptee) ; //on recupere la taille de la chaine
        nb_octects_ecrit = socket->writeBlock(trame_cryptee ,longueur_trame) ;
        cout<<"j'ai ecrit "<<nb_octects_ecrit<<"octects sur la socket avec le message "<<trame_cryptee<<endl ;
        memset(trame_a_cryptee ,'\0' , MAXDATA);
        memset(type_trame ,'\0' , MAXDATA);
        memset(trame_cryptee ,'\0' , MAXDATA);
        socket->close() ;
        delete socket ;
}

Reply

Marsh Posté le 06-05-2004 à 10:29:58   

Reply

Marsh Posté le 06-05-2004 à 10:34:04    

Code :
  1. strlen(trame_cryptee) ; //on recupere la taille de la chaine


 
Que fait un strlen dans un programme en C++ ?
Que fait un strlen dans un programme en C pour manipuler un objet qui n'est pas une chaine de caractères a 0 terminal ? ( je suppose que trame_cryptee n'est pas codée en ASCII non ? )

Reply

Marsh Posté le 06-05-2004 à 10:42:22    

non trame_cryptee n'est poas codée en ASCII et trame_cryptee est bien une chaine ne t'inkète pa
Mai de toute facon se n'est pa le probleme mon probleme c'est que dès que je sors de cette methode j'ai un segmantation fault pourquoi ?
 
merci d'avance

Reply

Marsh Posté le 06-05-2004 à 10:44:48    

pas de char* en C++ bourdel, std::string ou vector<char> :o

Reply

Marsh Posté le 06-05-2004 à 10:56:44    

Si tu es sous Linux, essaye d'utiliser valgrind pour te trouver ton problème.
 
Autre chose sinon :

Code :
  1. delete socket;


 
Est tu certains de n'avoir pas détruit 2 fois socket ? Remplace ce code par ça pour voir ce que ça donne :
 

Code :
  1. delete socket;
  2. socket = 0;


Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed