Autore Topic: throughput o goodput??  (Letto 1409 volte)

Offline mambu

  • Utente normale
  • ***
  • Post: 167
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 7
throughput o goodput??
« il: 22 Giugno 2012, 11:32:30 CEST »
0
Codice (Java): [Seleziona]
url = new URL(urlStr);
                        urlCon= (HttpURLConnection) url.openConnection();
                        urlCon.setConnectTimeout(TOConn * 1000);
                        urlCon.setReadTimeout(TOConn * 1000);
                        is = urlCon.getInputStream();
                        while((is.available()>0) ){
                                is.read(bytes)
                        }


tramite questo codice secondo voi ottengo il numero di bit compreso gli header della comunicazione o solo il payload del pacchetto?

Offline ab5000

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One
  • Play Store ID:
    Andrea Biondo
  • Sistema operativo:
    Windows 7
Re:throughput o goodput??
« Risposta #1 il: 22 Giugno 2012, 14:33:00 CEST »
0
Sono inclusi anche gli header.

Offline mambu

  • Utente normale
  • ***
  • Post: 167
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:throughput o goodput??
« Risposta #2 il: 22 Giugno 2012, 14:34:32 CEST »
0
secondo te c'è un qualche modo per ricavarmi solo il goodput durante i dopo la raccolta dei dati?

Offline ab5000

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One
  • Play Store ID:
    Andrea Biondo
  • Sistema operativo:
    Windows 7
Re:throughput o goodput??
« Risposta #3 il: 22 Giugno 2012, 14:53:47 CEST »
0
secondo te c'è un qualche modo per ricavarmi solo il goodput durante i dopo la raccolta dei dati?

Dovresti scartare gli header dalla lettura. Gli header sono separati da una linea vuota, quindi quando incontri un doppio CRLF (\r\n\r\n) sai che sono finiti.

Un consiglio: quando stai leggendo il contenuto vero e proprio, ti conviene, oltre a controllare is.available(), limitare i dati letti al valore dell'header Content-Length. Per ottenerlo puoi chiamare getHeaderFieldKey con valori del parametro n crescenti finchè non trovi Content-Length. Quando ritorna null sai che gli header sono finiti (occhio che può ritornare null per n = 0, quindi vai avanti comunque a n = 1). Una volta che hai n puoi chiamare getHeaderField per avere il valore di Content-Length.

Javadoc per HttpURLConnection: http://docs.oracle.com/javase/1.4.2/docs/api/java/net/HttpURLConnection.html

Offline mambu

  • Utente normale
  • ***
  • Post: 167
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:throughput o goodput??
« Risposta #4 il: 22 Giugno 2012, 14:58:35 CEST »
0
la connessione però è composta da moltissimi pacchetti, quindi dovrei fare un controllo ogni volta che sto per iniziare il ciclo while..giusto?

Offline ab5000

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One
  • Play Store ID:
    Andrea Biondo
  • Sistema operativo:
    Windows 7
Re:throughput o goodput??
« Risposta #5 il: 22 Giugno 2012, 15:06:51 CEST »
0
la connessione però è composta da moltissimi pacchetti, quindi dovrei fare un controllo ogni volta che sto per iniziare il ciclo while..giusto?

Ho visto ora che esiste il metodo getContentLength che è molto più comodo.

Offline mambu

  • Utente normale
  • ***
  • Post: 167
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:throughput o goodput??
« Risposta #6 il: 22 Giugno 2012, 15:20:24 CEST »
0
ho controllato, ma questo mi restituisce la dimensione del file che alla fine avrò scaricato nella memoria del telefono. Se interrompo per un qualsiasi motivo la comunicazione quel dato li sarà fasullo.
Io non ho bisogno di sapere quanto è grande il file che ho scaricato, io devo trovare una funzione alternativa alla read(perché mi hai già detto che la read mischia tutto) che mi legga bytebyte solo i dati puliti senza gli header...

Offline ab5000

  • Nuovo arrivato
  • *
  • Post: 23
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One
  • Play Store ID:
    Andrea Biondo
  • Sistema operativo:
    Windows 7
Re:throughput o goodput??
« Risposta #7 il: 22 Giugno 2012, 15:27:14 CEST »
0
ho controllato, ma questo mi restituisce la dimensione del file che alla fine avrò scaricato nella memoria del telefono. Se interrompo per un qualsiasi motivo la comunicazione quel dato li sarà fasullo.
Io non ho bisogno di sapere quanto è grande il file che ho scaricato, io devo trovare una funzione alternativa alla read(perché mi hai già detto che la read mischia tutto) che mi legga bytebyte solo i dati puliti senza gli header...

Hai già fatto un test? getInputStream può ritornare o no gli header, a seconda di come è implementato. L'ultima volta che l'ho usato (non su Android), ritornava gli header, ma su Android potrebbe essere diverso. Fai un progettino di prova e vedi cosa fa.

Offline mambu

  • Utente normale
  • ***
  • Post: 167
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:throughput o goodput??
« Risposta #8 il: 22 Giugno 2012, 15:28:28 CEST »
0
ah ok non ne sei certo, farò qualche test allora, ho chiesto così facevo prima.
:)