Le serveur est écrit en C# et fonctionne correctement avec un client que j'ai fait en C#, maintenant j'essaye de faire un client android mais le serveur ne reçoit pas le vrai message, ça devient juste beaucoup de points d'interrogation.Le serveur TCP obtient ???????? au lieu du vrai message
Voici le serveur
TcpListener listen = new TcpListener(IPAddress.Any, 1200);
TcpClient client;
listen.Start();
client = listen.AcceptTcpClient();
NetworkStream stream = client.GetStream();
byte[] buffer = new byte[client.ReceiveBufferSize];
int data = stream.Read(buffer, 0, client.ReceiveBufferSize);
string message = Encoding.Unicode.GetString(buffer, 0, data);
Console.WriteLine(message);
c'est le client Android
EditText et = (EditText) findViewById(R.id.EditText01);
String str = et.getText().toString()
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())),
true);
out.println(str);
Par exemple, si je vous envoie le message "Bonjour", les impressions du serveur « ???????? ??? " et il arrive la même chose pour tout message que j'envoie, même seulement 1 lettre
J'ai aussi essayé différentes méthodes comme celui-ci, mais le résultat est le même:
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
out.writeBytes(str);
Cela ressemble à un problème d'encodage. Vérifiez quel encodage est défini sur le serveur –
Que voulez-vous dire Nikita? J'ai essayé de changer le client Android dans PrintStream out = new PrintStream (socket.getOutputStream()); mais je reçois toujours la même erreur – Alessandro
'String str = et.getText(). ToString()'. Mieux vaut utiliser une chaîne prédéfinie. Et dites-nous combien d'octets sont envoyés et combien d'octets ont été reçus. – greenapps