Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Как уменьшить объем траффика?


Автор: McManaman 30.6.2009, 15:51
Здравствуйте!

Есть приложение, которое должно постоянно работать. Для проверки работоспособности 24/7/365 приложение каждые 30 секунд отправляет свой идентификатор серверу. 

Проблема 1: приложение потребляет много трафика. Каждый запрос это в среднем 360 байт отправленных и 160 байт полученной информации. В сумме 520 байт за запрос. Т.е. в минуту 1кб, в час 60кб, в день , 1.4Мб, в месяц 43мб, что при средней цене 7 руб за мб получается 300 руб. 

Вопрос1: как уменьшить объем трафика, если приложению нужно всего лишь отправить 2 раза в минуту один числовой идентификатор, а получать вообще ничего не надо? Почему сейчас все равно какие-то байты получаются, если я ничего не читаю из потока? (см. код ниже)

Вопрос2: в эту паузу (30 сек) телефон по ходу дела закрывает интернет-сессию (на моем сонэрике исчезает значок глобусика), поэтому мегафон тарифицирует это одно соединение и округляет сразу до 300 кб. Этого не происходит, если интервал между запросами уменьшить, например, до 5 секунд, но тогда резко возрастает трафик и потребление аккаумулятора. 
Вопрос, как заставить телефон не закрывать сессию соединения с телефоном?


Использую следующий код:
Код

try{
  SocketConnection sc = (SocketConnection) 
    Connector.open("socket://serverurl:serverport");
  OutputStream os = null;
  try{
    os = sc.openOutputStream();
    byte[] data = "ID:27563".getBytes();
    os.write(data);
  } finally{
      sc.close();
      os.close();
  }
} catch (IOException x){
}



Заранее благодарю за ответы.


Автор: W0LF 30.6.2009, 16:23
1. Убрать "ID:", айдишник можно слать в байтовом представлении, можно бить вплоть до битов, оперировать битовыми операциями а не из строки брать байты.
2. Посмотрите пример в WTk/apps. там есть пример с сокетами. Ваша проблема в том, что Вы каждый раз создаете сокет соединение, а Вам его нужно держать

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)