> Reads some number znamena 1,2 az x. > Pouzivejte read(), > nebo upravte podminku while (bytesRead > 0); a pozorne ctete dokumentaci :-)
^-- Dakujem za nasmerovanie na dokumentaciu. Samozrejme som ju cital, a cital som ju tolko krat, ze ju mozem citovat spamati. Nijako ale nemozem najst rozpor medzi tym, ako je InputStream navrhnuty, (dufajme) implementovany a zdokumentovany a tym, ako som sa ju pokusil pouzit. > Podle me InputStream precte tolik bytu, kolik ma k dispozici, a to muze byt > i mene nez jaka je deklarovana velkost bufferu. ^-- Aj podla mna. A presne na tom je zalozena ta slucka while: ak sa nacital "plny buffer", su patrne dalsie udaje k dispozicii a treba citat dalej. Ak sa nenacital plny buffer, nie su udaje k dispozicii a citanie moze skoncit. > public int read(byte[] b) > throws IOException > > Reads some number of bytes from the input stream and stores them into > the buffer array b. The number of bytes actually read is returned as an > integer. This method blocks until input data is available, end of file is > detected, or an exception is thrown. ^-- Z toho mi vyplyva, ze zmienema metoda skonci citanie, ak nastane niektory z tychto pripadov: 1) Dojde k vynimke. 2) Dojde sa na koniec streamu. 3) Zaplni sa buffer, do ktoreho ma umiestnit vysledky. Zaroven z tej dokumentacie vyplyva, ze metoda read neprestane citat len preto, ze "udaje zatial z druhej strany nedorazili" (pokial teda nedojde na socket timeout, ale to by skonvergovalo na pripad 1), t.j. vyhodenie vynimky). Ja ale pozorujem spravanie, kedy: 1) K vynimke nedojde. 2) Na koniec streamu sa nedojde, lebo udaje evidentne chybaju. 3) Pri prechode slucky sa nezaplnil cely buffer. Najhorsie na tomto je, ze nedojde k ziadnej chybe. Citane obsahu zo siete funguje, a na to, ze nejake udaje chybaju, sa pride v najlepsom pripade ovela "vyssie", ale vacsinou sa na to pride az ked su tieto udaje posunute dalsej aplikacii. J.
