Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di LuckySevenRoX
    Registrato dal
    Sep 2011
    residenza
    Foligno
    Messaggi
    361

    [J2ME] Limite ai KB inviati/ricevuti da connessione

    Salve, sono sempre io con i miei problemi!

    Ho 2-3 dubbi che comunque si riassumono nello stesso argomento.. Ciò che vorrei realizzare è un controllo sull'invio dei dati tramite connessione internet da cellulare.. Come faccio a limitare l'invio di dati tipo a 1KB? (1024Byte)

    Se imposto il BufferedOutputStream/BufferedInputStream con un massimo di 1024 byte dite che funziona? e i dati che continuano ad arrivare e "sbattere" sul buffer chiuso che fine fanno?

    Inoltre, tramite un thread che gestisce la connessione, ho messo un controllo che:
    Scarica i dati da una pagina web (inferiori a 1024)
    Li registra all'interno del programma
    CHIUDE LA CONNESSIONE
    Riapre la connessione
    Scarica ecc. ecc. ripetendosi dopo uno Sleep di 3 minuti

    Ciò che non capisco è perchè, se chiudo la connessione e la riapro dopo 3 minuti, il cellulare continua a ricevere dati come se fosse sempre la stessa connessione? teoricamente il cellulare dovrebbe disconnettersi (e quindi risultare un invio di max 1024byte), per poi riconnettersi (e appunto risultare di nuovo un invio/ricezione di massimo 1024byte).. quale può essere il problema?

    spero di essere stato chiaro (le domande principali sono in grassetto).. grazie!

    EDIT: ora che ci penso bene, il problema è solo il secondo.. perchè anche se riesco a bufferizzare l'input/output ma poi non riesco a dividerlo su due o più connessioni diverse è inutile.. la cosa importante adesso è capire perchè resta aperta la connessione

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Resta da capire come chiudi/riapri la connessione.


    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

  3. #3
    Utente di HTML.it L'avatar di LuckySevenRoX
    Registrato dal
    Sep 2011
    residenza
    Foligno
    Messaggi
    361
    In effetti ho dato x scontato che chi legge questo post abbia seguito anche quello precedente..

    Allora in poche parole il mio software, tramite un thread sempre in esecuzione, esegue una connessione a una pagina web e ogni 3 minuti (thread.sleep()) mi scarica il contenuto della pagina.

    Io so che l'operatore 3 non fa pagare lo scambio di dati sotto i 5KB, quindi la mia idea, per ottenere aggiornamenti "gratis" dalla rete, era quella di connettermi alla pagina web con HttpConnection, scaricare i dati (una manciata di byte), chiudere la connessione con connection.close(), aspettare 3 minuti, riaprire ecc.

    Oggi però ho scoperto che la Tre "chiude" la connessione a volume dopo 30 minuti di inattività, quindi credo che il mio problema sia questo.. il software funziona, ma i KB scaricati si accumulano proprio per questo fatto della mezz'ora

    Quidi il mio problema ora è di contare i byte scaricati fino a 5KB per poi dire al programma "aspetta 30 minuti e riapri la connessione"..

    Come faccio a calcolare i byte inviati/scaricati? ho provato a farmi restituire la dimensione del buffer ad ogni aggiornamento ma la quantità restituita non corrisponde a quella trasmessa..

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Non credo che la cosa sia fattibile, dato che i byte in transito sulla connessione non dipendono dal programma Java, ma dal protocollo di comunicazione dell'hardware... in poche parole, durante una connessione, anche se non vi è traffico "utente", il sottositema in qualche modo comunica con il server dell'operatore... e credo che questo venga comunque conteggiato come traffico.
    Dal programma Java hai visibilità solo sui dati "utente", non sui dati di comunicazione del sottosistema.


    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

  5. #5
    Utente di HTML.it L'avatar di LuckySevenRoX
    Registrato dal
    Sep 2011
    residenza
    Foligno
    Messaggi
    361
    Si avevo pensato anche a questo, però suppongo che in background avvengano scambi di informazione "fissi", nel senso che vengono inviati dati al momento della connessione e, forse, al momento della disconnessione.. Considerando che tramite sito web della Tre posso accedere a una pagina dove sono elencate le varie connessioni effettuate, con tanto di KB scambiati.. se metto al mio programma un limite di scambio dati utente a 5KB, posso poi consultare il sito e , se per esempio lì mostra 6KB scambiati, vuol dire che in background il cellulare invia 1KB di dati.. in questo modo posso portare il limite del mio software a 4KB e avere in tutto un 5KB di scambio.. che ne pensi? può funzionare?

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da LuckySevenRoX
    Si avevo pensato anche a questo, però suppongo che in background avvengano scambi di informazione "fissi", nel senso che vengono inviati dati al momento della connessione e, forse, al momento della disconnessione.. Considerando che tramite sito web della Tre posso accedere a una pagina dove sono elencate le varie connessioni effettuate, con tanto di KB scambiati.. se metto al mio programma un limite di scambio dati utente a 5KB, posso poi consultare il sito e , se per esempio lì mostra 6KB scambiati, vuol dire che in background il cellulare invia 1KB di dati.. in questo modo posso portare il limite del mio software a 4KB e avere in tutto un 5KB di scambio.. che ne pensi? può funzionare?
    Non so quanto possa essere affidabile... l'unico modo è provare.


    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 L'avatar di LuckySevenRoX
    Registrato dal
    Sep 2011
    residenza
    Foligno
    Messaggi
    361
    Infatti sto facendo prove su prove.. ciò che non mi torna è come fare a conteggiare i byte inviati/ricevuti.. come ho già detto ho provato a contare i byte del buffer ad ogni invio/ricezione, ma credo che non funzioni.. e poi è normale che una stringa di 28 caratteri mi restituisce 27 byte? ho fatto delle ricerche e altri hanno avuto il mio stesso problema, ma non sono state trovate soluzioni..

    faccio bene a contare i byte ricevuti nel buffer? devo "moltiplicarli" per qualche valore, magari relativo alla codifica? ci sono dei "byte fissi" da aggiungere? so che le mie domande non possono ottenere facilmente una risposta.. ma se possibile vorrei almeno una spintarella verso qualche direzione.. libri? guide online? ho cercato di tutto.. qualunque libro ti fa studiare gli stream in modo molto basilare e problemi come il mio non si affrontano.. su forum e simili molti hanno fatto la mia stessa domanda ma non sono state date soluzioni efficaci..

    confido in voi!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.