java - recibir - DataInputStream.read() vs DataInputStream.readFully()
sockets java examples (1)
Estoy haciendo una aplicación de socket TCP / IP simple
¿Cuál es la diferencia entre hacer esto?
DataInputStream in = new DataInputStream(clientSocket.getInputStream());
byte[] buffer = new byte[100];
in.readFully(buffer);
versus hacer esto:
DataInputStream in = new DataInputStream(clientSocket.getInputStream());
byte[] buffer = new byte[100];
in.read(buffer);
Eché un vistazo a la documentación, tienen la misma descripción exacta. readFully() y read() Entonces, ¿puedo suponer que es lo mismo?
El Javadoc para DataInput.readFully(byte[] b) establece:
Lee algunos bytes de una secuencia de entrada y los almacena en la matriz de memoria intermedia
b. El número de bytes leídos es igual a la longitud deb.
El Javadoc para DataInputStream.read(byte[] b) establece:
Lee una cierta cantidad de bytes de la secuencia de entrada contenida y los almacena en la matriz de memoria intermedia
b. La cantidad de bytes realmente leídos se devuelve como un número entero. Este método bloquea hasta que los datos de entrada estén disponibles, se haya detectado el final del archivo o se haya lanzado una excepción .
Básicamente, readFully() leerá exactamente b.length bytes, mientras que read() leerá hasta b.length , quizás menos, lo que esté disponible desde la secuencia de entrada.