Salve, volevo riuscire a calcolare il traffico (in byte) che la mia applicazione (o meglio i mei peer di una rete p2p) generano in upload e in downlaod. Questa è una bozza dell' ipotetica classe che gestisce il tutto:
Codice PHP:
public class PeerNetTrafficStats {
/* Dimensione in byte dell'header di un pacchetto TCP */
public static final int TCP_HEADER_SIZE = 20;
/* Dimensione in byte dell'header di un datagramma UDP */
public static final int UDP_HEADER_SIZE = 8;
/** Byte inviati dal peer */
private int uploadedByte;
/** Byte ricevuti dal peer */
private int downloadedByte;
/**
* Costruttore privato per impedire l'istanziazione della classe.
*/
private PeerNetTrafficStats(){
}
public int getUploadedByte(){
return uploadedByte;
}
public int getDowloadedByte(){
return downloadedByte;
}
public void increaseUploadedByte(int size){
uploadedByte += size;
}
public void increaseDownloadedByte(int size){
uploadedByte += size;
}
}
Ovviamente non fa praticamente nulla ma è per dare un'idea.
Quindi in defininitiva io conosco:
- la dimensione degli oggetti che invio.
- la dimensione degli header dei pacchetti (TCP o UDP)
Finito? non proprio secondo le mie conoscenze...poichè il protocollo di rete "spezzetta" il mio oggetto in tanti pacchetti con appunto tanti header. Come faccio dunque a calcolare questo?
Devo conoscere la dimensione massima di ogni pacchetto, ci sottraggo al dimensione dell'header e conosco il carico utile del pacchetto..a questo punto divido la dimensione dell'oggetto per questa grandezza e ottengo quanti pacchetti sono stati inviati....moltiplico questo numero per l'header e ci sommo la dimensione dell'oggetto e ottengo quello che voglio?
BYTE INVIATI = (DIMENSIONE_HEADER * NUMERO_PACCHETTI) + DIMENSIONE_OGGETTO
Sono sulla strada giusta?
P.S. non va calcolato anche gli header degli altri livelli di rete?
molte grazie
:master: