Avatar billede bris Nybegynder
03. februar 2005 - 11:20 Der er 4 kommentarer og
1 løsning

Hente mange små filer via http

Hejsa. Jeg skal hente en masse små filer via http, og jeg har brugt HttpURLConnection, men hvor jeg connecter/disconnecter hver gang.
Dette har givet mig et stort overhead af connects/disconnects, som bruger en HULENS masse tid.
Er det mig som bruger denne komponent forkert, eller skal man bruge en anden komponent til at gøre dette hurtigere?
Jeg gør det nedenstående for hver fil:

        URL url = new URL("http://" + ip + filePath + fileName);
        HttpURLConnection con = (HttpURLConnection)url.openConnection();

        con.connect();
        if(con.getResponseCode() == HttpURLConnection.HTTP_OK) {
          InputStream is = con.getInputStream();
          ByteArrayOutputStream os = new ByteArrayOutputStream();
          byte[] bytes = new byte[BYTES_TO_READ];
          int i = is.read(bytes);

          while(i >= 0) {
            os.write(bytes, 0, i);
            i = is.read(bytes);
          }

          os.close();
          is.close();
          con.disconnect();
          return os.toByteArray();

Svar gerne med kodeeksempler..
Avatar billede arne_v Ekspert
03. februar 2005 - 11:31 #1
Det første du skal gøre er at bruge HTTP Keep-Alive, men hvis man kan stole
http://www.io.com/~maus/HttpKeepAlive.html så sker det automatisk.

Det næste du kan overveje er at lave din applikation multithreaded så du henter
flere filer i parallel.
Avatar billede bris Nybegynder
03. februar 2005 - 12:14 #2
Okay.. Hvad betyder det for min kode? Hvordan kan jeg downloade flere filer uden at disconnecte ved hjælp af HttpURLConnection?
Avatar billede arne_v Ekspert
03. februar 2005 - 12:21 #3
Som jeg læser det link så laver du bare en logisk disconnect og Java bruger
så keep alive og genbruger den fysiske connection.

D.v.s. at det er multithreading modellen du skal bruge hvis du vil forbedre performance.
Avatar billede arne_v Ekspert
25. februar 2005 - 20:53 #4
OK ?
Avatar billede bris Nybegynder
06. september 2007 - 09:49 #5
sorry..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester