Android客户端c#服务器通过套接字发送图像导致去同步
本文关键字:图像 同步 套接字 客户端 服务器 Android | 更新日期: 2023-09-27 18:03:21
我有一个c#服务器,它发送25个字符串和1个编码为String64的图像。我可以每5秒发送1次或每秒发送10次,这都没关系,最终会导致去同步。
Android: protected Void doInBackground(Void... arg0) {
Socket socket = null;
try {
socket = new Socket(dstAddress, dstPort);
Scanner r = new Scanner(new InputStreamReader(socket.getInputStream()));
while (true) {
//MASTER
valores[0] = r.nextLine();
valores[1] = r.nextLine();
valores[2] = r.nextLine();
valores[3] = r.nextLine();
valores[4] = r.nextLine();
valores[5] = r.nextLine();
valores[6] = r.nextLine();
valores[7] = r.nextLine();
valores[8] = r.nextLine();
valores[9] = r.nextLine();
valores[10] = r.nextLine();
valores[11] = r.nextLine();
valores[12] = r.nextLine();
//SLAVE
valores[13] = r.nextLine();
valores[14] = r.nextLine();
valores[15] = r.nextLine();
valores[16] = r.nextLine();
valores[17] = r.nextLine();
valores[18] = r.nextLine();
valores[19] = r.nextLine();
valores[20] = r.nextLine();
valores[21] = r.nextLine();
valores[22] = r.nextLine();
valores[23] = r.nextLine();
valores[24] = r.nextLine();
valores[25] = r.nextLine();
valores[26] = r.nextLine();
Log.e("MSG",valores[26]);
publishProgress(valores[0], valores[1], valores[2], valores[3], valores[4], valores[5], valores[6], valores[7], valores[8], valores[9], valores[10], valores[11], valores[12],
valores[13], valores[14], valores[15], valores[16], valores[17], valores[18], valores[19], valores[20], valores[21], valores[22], valores[23], valores[24], valores[25], valores[26]);
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return null;
}
服务器c# string conetado, bateria, tensao, altitude, roll, pitch, yaw, velx, vely, velz, estado, atual, desejado;
string conetado2, bateria2, tensao2, altitude2, roll2, pitch2, yaw2, velx2, vely2, velz2, estado2, atual2, desejado2;
conetado = master.sconetado;
bateria = master.sbateria;
tensao = master.stensao;
altitude = master.saltitude;
roll = master.sroll;
pitch = master.spitch;
yaw = master.syaw;
velx = master.svelx;
vely = master.svely;
velz = master.svelz;
estado = master.sestado;
atual = master.satual;
desejado = master.sdesejado;
conetado2 = slave.sconetado;
bateria2 = slave.sbateria;
tensao2 = slave.stensao;
altitude2 = slave.saltitude;
roll2 = slave.sroll;
pitch2 = slave.spitch;
yaw2 = slave.syaw;
velx2 = slave.svelx;
vely2 = slave.svely;
velz2 = slave.svelz;
estado2 = slave.sestado;
atual2 = slave.satual;
desejado2 = slave.sdesejado;
ImageConverter converter = new ImageConverter();
byte[] sendBytes = (byte[])converter.ConvertTo(master.picturebox_master.Image, typeof(byte[]));
string_master_frame = Convert.ToBase64String(sendBytes);
data = conetado + "'n" + bateria + "'n" + tensao + "'n" + altitude + "'n" + roll + "'n" + pitch + "'n" + yaw + "'n" + velx + "'n" + vely + "'n" + velz + "'n" + estado + "'n" + atual + "'n" + desejado + "'n" +
conetado2 + "'n" + bateria2 + "'n" + tensao2 + "'n" + altitude2 + "'n" + roll2 + "'n" + pitch2 + "'n" + yaw2 + "'n" + velx2 + "'n" + vely2 + "'n" + velz2 + "'n" + estado2 + "'n" + atual2 + "'n" + desejado2 + "'n" + string_master_frame + "'n";
send(data)
我使用log调试,一段时间后我得到一个错误说坏String64。问题是string64现在已经完全损坏了。
日志:https://justpaste.it/xhn8
正如你所看到的,它开始得很好。字符串will many AAAAAA是正确的,因为图像非常黑。
一段时间后,它甚至出现文本从TextViews
08-19 20:33:53.474 18854-18896/com.example.tiago.java_android E/MSG: 0 ?0
08-19 20:34:02.124 19160-19199/com.example.tiago.java_android E/MSG: landing, Command
是什么导致了这个?有办法解决这个问题吗?
修复。我必须使用BufferedReader。