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: