Bonjour
J'avais plus de temps pour terminer mon PFEJ'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:
Lignes de code d'envoi de la Socket :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 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 de reception :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 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(); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 // 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); }
Partager