Tengo una aplicación de Android donde intento enviar una imagen a un servidor. Hice esto usando codificación Base64 y funcionó bastante bien, pero tomó demasiada memoria (y tiempo) para codificar la imagen antes de enviarla.Java/Android: leer/escribir una matriz de bytes en un socket
Estoy tratando de quitar la aplicación de Android a donde simplemente envía la matriz de bytes y no juguetea con ningún tipo de esquema de codificación por lo que ahorrará la mayor cantidad de memoria y ciclos de CPU posible.
Esto es lo que me gustaría que el código de Android para que parezca:
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 " ";
}
El servidor está escrito en Java. ¿Cómo escribo el código del servidor para que pueda recuperar correctamente la misma matriz de bytes? Mi objetivo es ahorrar tantos ciclos de CPU en Android como sea posible.
Hasta ahora, todos los métodos que he probado dieron como resultado datos corruptos o una excepción lanzada.
Cualquier ayuda será apreciada.
Funciona pero la lectura del byte de la secuencia es totalmente ineficiente y lenta. Mejor es leer al menos 1024 bytes a la vez. – Robert
Supongo que devolver null en lugar de nuevo byte [] {} sería una mejor idea. – Zaki