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