Bir sunucuya resim göndermeye çalıştığım bir Android uygulamasına sahibim. Bunu Base64 kodlamasını kullanarak yaptım ve çok iyi çalıştı, ancak göndermeden önce resmi kodlamak için çok fazla bellek (ve zaman) gerekiyordu.Java/Android: Bir yuva üzerinde bir bayt dizisi okuma/yazma
Android uygulamasını, yalnızca bayt dizisini gönderdiği yere indirmeye çalışıyorum ve herhangi bir kodlama şemasıyla uğraşmadığı için mümkün olduğunca fazla bellek ve CPU döngüsü kaydedecek. Sunucu Java ile yazılmış
public String sendPicture(byte[] picture, String address) {
try {
Socket clientSocket = new Socket(address, 8000);
OutputStream out = clientSocket.getOutputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
out.write(picture);
return in.readLine();
}
catch(IOException ioe) {
Log.v("test", ioe.getMessage());
}
return " ";
}
:
Bu benim Android kod gibi görünmek istiyorum şeydir. Sunucu kodunu nasıl yazarım, böylece aynı bayt dizisini düzgün bir şekilde alabilirim? Amacım mümkün olduğunca çok sayıda CPU döngüsü kaydetmektir.
Şimdiye kadar, denediğim tüm yöntemler bozuk veri veya atılmış bir istisna ile sonuçlandı.
Herhangi bir yardım için teşekkür ederiz. Böyle
Akıştan bayt için yapılan ancak okunan bayt değerleri tamamen verimsiz ve yavaştır. Bir kerede en az 1024 bayt okumak daha iyidir. – Robert
Yeni bayt yerine [] {} yerine null döndürmek daha iyi bir fikir olurdu. – Zaki