socket recibir multiples multiple examples example enviar ejemplo clients clientes java sockets java-io

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 de b .

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.