Ne, přes http to neni. Na serveru běží démon co přijmá spojení od klientu a vytváří vlákna pro příjem dat od klientů.
Spojení navazuji pomoci tříd Socket a ServerSocket.
Vysvětlivky:
vstup - DataInputStream
vystup -DataOutputStream
cteni - FileInputStream
zapis - FileOutputStream
klient:
serverKód:byte buffer[] = new byte[velikostBufferu]; int nacteno=0; long nactenoCelkem=0; while (nacteno!=-1){ nacteno = cteni.read(buffer,nactenoCelkem,velikostBufferu-nactenoCelkem); //cteni ze souboru if (nacteno!=-1){ nactenoCelkem+=nacteno; } if ((nactenoCelkem+10000>=velikostBufferu) || (nacteno == -1)){ vystup.write(buffer,0,nactenoCelkem); if (nacteno!=-1){ nacteno = 0; }else{ vystup.close(); } nactenoCelkem = 0; } }
takhle to funguje kdyz se zavre ten OutputStream u klienta. Tim vrati metoda read na serveru -1Kód:while (nacteno!=-1){ nacteno = vstup.read(buffer,nactenoCelkem,velikostBufferu-nactenoCelkem); //cteni dat ze socketu if (nacteno!=-1){ // pokud byli nacteny data nactenoCelkem += nacteno; } if ((nactenoCelkem+10000>=velikostBufferu) || (nacteno == -1)){ //jestlize je buffer plny(je tam rezerva aby nepretekl) nebo nebyli nacteny data zapis.write(buffer,0,nactenoCelkem); //zapis do souboru if (nacteno!=-1){ nacteno = 0; } nactenoCelkem = 0; } }





Odpověď s citací