2 votes

Pourquoi Android envoie-t-il des symboles étranges à la fin du socket? (�)

Pourquoi Android envoie-t-il ce symbole?()

Ce que je fais, c'est obtenir quelques variables, les mettre toutes ensemble, et ensuite les envoyer en utilisant le Multicast. Les symboles n'apparaissent qu'à la fin de la chaîne de caractères, et se répètent beaucoup.

byte[] buffer;

String temp1 = "temp1=" + "37";
String weight1 = "weight1=" + "68";
String bpm = "bpm=" + "128";
String angBack = "angback=" + "90";
String angLeg = "angleg=" + "90";
String angBed = "angbed=" + "91";

String msg = "status:teste," + temp1 + "," + weight1 + "," + bpm + "," + angBack + 
              "," + angLeg + "," + angBed;

buffer = msg.getBytes();

InetAddress group = InetAddress.getByName("230.0.0.1");

DatagramPacket packet = new DatagramPacket(buffer, buffer.length, group, 5556);
socket.send(packet);

Ensuite, de l'autre côté, je reçois la chaîne de caractères, et ces symboles apparaissent à la fin de la chaîne de caractères.

byte[] buffer = new byte[256];

DatagramPacket packet = new DatagramPacket(buffer, buffer.length);

multicastSocket.receive(packet);

String msg = new String(packet.getData());

Pourquoi cela se produit-il?

3voto

pawelzieba Points 10393

Ce n'est pas un symbole étrange, c'est juste 0x00.
Vous écrivez tout le tampon, vérifiez la longueur des données.

String msg = new String(packet.getData(), packet.getOffset(), packet.getLength());

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X