Mam aplikację na Androida, do której próbuję wysłać zdjęcie do serwera. Zrobiłem to za pomocą kodowania Base64 i działało całkiem dobrze, ale zajęło to zbyt dużo pamięci (i czasu), aby zakodować obrazek przed wysłaniem go.Java/Android: odczytywanie/zapisywanie tablicy bajtów przez gniazdo
Próbuję rozebrać aplikację na Androida do miejsca, w którym po prostu wysyła ona tablicę bajtów i nie układa się z jakimkolwiek schematem kodowania, dzięki czemu zaoszczędzi tyle pamięci i cykli procesora, jak to tylko możliwe.
To co chciałbym kod Android wyglądać:
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 " ";
}
Serwer jest napisany w Javie. Jak napisać kod serwera, aby poprawnie pobrać dokładnie tę samą tablicę bajtów? Moim celem jest zaoszczędzenie jak największej liczby cykli procesora na systemie Android.
Do tej pory wszystkie wypróbowane metody spowodowały uszkodzenie danych lub zgłoszony wyjątek.
Każda pomoc zostanie doceniona.
Działa, ale bajt czytania bajtu ze strumienia jest całkowicie nieefektywny i powolny. Lepiej jest przeczytać co najmniej 1024 bajty na raz. – Robert
Myślę, że zwracanie wartości null zamiast nowego bajtu [] {} byłoby lepszym pomysłem. – Zaki