Bonjour, je fais une application cliente sous android qui communique avec son serveur sous Qt.
Le client envoie un fichier que le serveur réceptionne et celui-ci envoie une chaine de caractère au client pour lui dire si tout s'est bien passé
J'arrive sans problème à envoyer et réceptionner le fichier mais je n'arrive pas à envoyer le réponse du serveur, ça me paraît pourtant simple. Voici mon code
Le client :
Et la partie serveur en C++/Qt :Code:public boolean envoyer(File source) { Socket socket = null; try { socket = new Socket(mIpServeur, PORT_FILE); FileInputStream sourceFile = new FileInputStream(source); DataOutputStream dout = new DataOutputStream(socket.getOutputStream()); BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); try { try { long size = source.length(); // taille du fichier ; source est un objet File byte buffer[] = new byte[512 * 1024]; Log.e(getClass().getSimpleName() + ".envoyer(File source)", "envoi de " + source.getName() + " ; " + String.valueOf(size) + " bytes"); dout.writeLong(size); dout.writeBytes(source.getName()+"\n"); int nbLecture; while ((nbLecture = sourceFile.read(buffer)) != -1) { dout.write(buffer, 0, nbLecture); } sourceFile.close(); String reponse = reader.readLine(); Log.e("réponse", reponse); } catch(SocketException e) { e.printStackTrace(); } finally { dout.close(); socket.close(); } } finally { sourceFile.close(); } } catch (IOException e) { e.printStackTrace(); return false; } finally { try { if(socket != null) socket.close(); } catch (IOException e) { e.printStackTrace(); } } return true; // Résultat OK }
Code:void Torrent::reponse(int resultat) { qDebug() << "réponse" << resultat; QString data; if(resultat == 0) data = "downloadOk\n\r"; else data = "Erreur : " + QString::number(resultat).toAscii() + "\n\r"; mSocket->write(data.toStdString().c_str(), data.length()); //mSocket est un QTcpSocket }
Actuellement le serveur est comme bloqué (la fonction reponse() n'est pas appelée), si je déconnecte le client le serveur se "débloque" et exécute sa tache comme prévue
Pourriez-vous m'aider ?
-----