>  > Zaroven z tej dokumentacie vyplyva, ze metoda read neprestane citat
>  > len preto, ze "udaje zatial z druhej strany nedorazili" (pokial teda
>
>  Nic takoveho z dokumentace nevyplyva.
>
>  Nedorozumeni asi vypliva z toho, ze jste si obrat
>   "blocks UNTIL input data is available"
>  vylozil jako ekvivalent
>   "blocks AS LONG AS input data is available"
>
>  Tak to ale neni; metoda read() obecne musi (podle obecneho kontraktu) cekat 
> pouze pokud nema momentalne zadna data k dispozici. Zda pak bude cekat az 
> tech dat bude dostatek na zaplneni predaneho bufferu, nebo zda vrati nejaky 
> mensi block (treba i jeden byte), to uz zalezi na konkretni implementaci.

Hmm, skoro som tomu uveril. Ako si ale mam formulaciu "This method
blocks until input data is available, the end of the stream is
detected, or an exception is thrown." vysvetlit pre metodu read() bez
parametrov, ktora zjavne nema moznost, na rozdiel od read(byte[]),
precitat "mensi kusok"? Pozrel som zdrojaky InputStream-u; metodoa
read(byte[]) nerobi nic ine, iba patricne vola read() bez parametrov.
However, predcasne skoncit moze, ak dojde k IOException, co ale celkom
uspesne odmaskuje prazdnym catch blokom. Grrrrr.

Nicmenej, idem sa zahlbit do zdrojakov SocketInputStream-u, aj ked uz
na prvy pohlad to vyzera na citanie pre silne zaludky. Zda sa, ze
pristup je tu opacny, namiesto toho, aby metoda read(byte[]) bola
implementovana pomocou read(), tak read() je implementovana pomocou
read(byte[1]).

J.

Odpovedet emailem