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

Odpovedet emailem