Estoy usando un BinaryReader en la parte superior de un NetworkStream para leer datos de una red. Esto ha funcionado muy bien para mí, pero quiero entender lo que está sucediendo detrás de escena, así que eché un vistazo a la documentación de BinaryReader y me pareció extremadamente escasa.¿Qué hace BinaryReader si los bytes que estoy leyendo todavía no están presentes?
Mi pregunta es esta: ¿Qué hará BinaryReader.ReadBytes(bufferSize)
si bufferSize
bytes no están presentes en la transmisión de red cuando llamo al ReadBytes
?
En mi mente hay algunas opciones:
1) Leer los bytes que están presentes en la corriente de la red y devolver sólo que muchos
2) Espere hasta que bufferSize
bytes están presentes en la corriente, a continuación, leer
3) Lanzar una excepción
Supongo que la opción 2 está sucediendo, ya que nunca he recibido ninguna excepción y todos mis datos se reciben enteros, no en pedazos. Sin embargo, me gustaría saber con certeza qué está pasando. Si alguien pudiera iluminarme, estaría agradecido.
Bloqueará y se asegurará de que obtenga el número solicitado de bytes. Solo obtendrá menos si la transmisión se cerró y usted los ha leído todos. –