Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Socket UDP

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2018
    Messaggi
    8

    Socket UDP

    Buongiorno, sto cercando di generare del traffico UDP per saturare la banda a piacimento.
    Mi spiego meglio: in base a una richiesta che fa il client all'utente su quanta banda vuole occupare (0<bandaoccupata<=100) vado a calcolarmi i pps e richiamo una sleep; Thread.sleep (1000/pps); Solo che il traffico generato è sempre lo stesso, qualcuno riesce a dirmi dove sbaglio ? Grazie mille in anticipo.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da chrypla Visualizza il messaggio
    Buongiorno, sto cercando di generare del traffico UDP per saturare la banda a piacimento.
    Traffico .. dove/verso chi?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2018
    Messaggi
    8
    Server

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2018
    Messaggi
    8
    Comunque ho capito che la sleep non funzionava perchè i valori erano sempre inferiori a zero, solo che essendo int non so come fare avrei bisofgno di una sleep float che non esiste

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da chrypla Visualizza il messaggio
    Comunque ho capito che la sleep non funzionava perchè i valori erano sempre inferiori a zero, solo che essendo int non so come fare avrei bisofgno di una sleep float che non esiste
    La sleep è in millisecondi (è un long). Devi semplicemente calcolarli ... non serve float come risultato finale!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Il valore del parametro della sleep() è un long che rappresenta un'unità di tempo in millisecondi... frazioni di millisecondo non hanno alcun senso, è per questo che non esiste una sleep che accetta un float.

    Prova a spiegare meglio cosa vuoi fare con la sleep().


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2018
    Messaggi
    8
    Mi serve per inviare un certo numero di pps, per esempio se devo inviare 20 pacchetti al secondo per saturare una certa quantità di banda nella sleep andrò a mettere 1000/pps

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da chrypla Visualizza il messaggio
    Mi serve per inviare un certo numero di pps, per esempio se devo inviare 20 pacchetti al secondo per saturare una certa quantità di banda nella sleep andrò a mettere 1000/pps
    1000/20 = 50 millisecondi. Quale è il dubbio?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2018
    Messaggi
    8
    Che quando vado a calcolare i pps : pps = bandaoccupata*valore in megabit/lunghezza del frame(64); Il valore è elevato perciò 1000/pps da un valore del genere; 0,000448523

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da chrypla Visualizza il messaggio
    Che quando vado a calcolare i pps : pps = bandaoccupata*valore in megabit/lunghezza del frame(64); Il valore è elevato perciò 1000/pps da un valore del genere; 0,000448523
    Se pps è maggiore/uguale a 1000 ... avrai sempre 0.

    Comunque nota che in Thread esiste anche:

    sleep(long millis, int nanos)

    Solo che dovresti calcolarti anche la parte dei nanosecondi. Ma c'è un modo più semplice da Java 5:

    TimeUnit.NANOSECONDS.sleep(nanosecondiCalcolati);

    (TimeUnit è la java.util.concurrent.TimeUnit)

    EDIT: la documentazione di quella sleep comunque lo dice chiaramente: subject to the precision and accuracy of system timers and schedulers
    Quindi dipende dalla piattaforma e sistema operativo, pertanto non puoi farci "troppo" affidamento.
    Ultima modifica di andbin; 19-02-2018 a 16:01
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.