Demande d'aide Urgent SVP :(
J'avais plus de temps pour terminer mon PFE :(
J'ai un problème d'envoi et de réception des messages entre le client et le serveur.
J'ai développé un client en java (Android) et un serveur en C++ (QT). le client arrive à se connecter au serveur , et même à envoyer des socket. le serveur peux recevoir mes socket mais lorsque il m’envoie une réponse soit elle arrive en caractères bizarres soit elle n'arrive que lorsque le serveur se déconnecte, et une socket "null" arrive avec.
J'arrive pas a comprendre le problème :( voici le code soit du coté client soit du coté serveur.
Merci
+
+
+
=======================> Pour le CLIENT:
+
+
Lignes de code de connexion au SERVEUR:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| try {
MyService.serverIpAddress = "10.0.2.2";
InetAddress serverAddr = InetAddress.getByName(MyService.serverIpAddress);
MyService.socket = new Socket(serverAddr, 10100);
} catch (UnknownHostException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
} |
__________________________________________________________________________________________________
Lignes de code d'envoi de la Socket :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| try {
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(MyService.socket.getOutputStream())),
true);
out.println(email+" "+password);
Log.d("Client", "Client sent message");
btnLogin.setEnabled(false);
inputEmail.setEnabled(false);
inputPassword.setEnabled(false);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} |
_____________________________________________________________________________
Lignes de code de reception :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| BufferedReader in = null;
try {
in = new BufferedReader(new InputStreamReader(MyService.socket.getInputStream()));
} catch (IOException e) {
e.printStackTrace();
}
while(true)
{
String msg=null;
try {
msg = in.readLine();
Log.d("","MSGGG: "+ msg);
identificateuruni = msg;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} |
=====================> Pour le serveur :
+
Code:
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 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| //Méthode d'envoi de sms
void FenServeur::envoyerSms(const QString &message, QTcpSocket *client)
{
QByteArray packet;
QDataStream out(&packet, QIODevice::WriteOnly);
out << (quint16)0;
out << message;
out.device()->seek(0);
out << (quint16)(packet.size() - sizeof(quint16));
client->write(packet);
}
//Méthode de reception de sms
void FenServeur::recevoirSms()
{
QTcpSocket *socket = qobject_cast<QTcpSocket *>(sender());
if (socket == 0)
{
qDebug() << "Pas de client à l'origine du signal";
return;
}
QDataStream in(socket);
QString message;
message=socket->readAll();
socket->flush();
qDebug() << "Message reçu: " << message;
envoyerSms(message, socket);
} |