Olá implementei um sistema que se comunica com um servidor web(aplicacao php), os sistemas trocam mensagens de texto, se eu for calcular em bytes
não passam de 100 bytes(100 caracteres), porém quando saio do sistema móvel ele automaticamente mostra a mensagem ‘x bytes transferidos’, e geralmente esse valor de ‘x’ é no mínimo 2000 bytes, o meu sistema móvel por exemplo faz login no sistema web passando ‘usuario’ e ‘senha’, e retorna uma mensagem de uns 20 caracteres, após o login eu saio da aplicação e ele diz q foram trafegados quase 2000 bytes, e com isso gera um gasto para o usuário, estou procurando alguma forma de diminuir os bytes transferidos, gostaria de saber se caso eu utilize socket UDP, o numero de bytes diminuirá, pq como utilizo HTTP, POST, deve gerar um cabeçalho muito maior q o proprio conteudo da mensagem, ou alguem pode me dar alguma ideia de outra forma?
Com UDP o número de bytes vai ser sim, muitíssimo menor. Ele também te poupa o custo do estabelecimento de uma conexão.
Entretanto, tome cuidado pq vc corre o risco de perder algumas mensagens durante a transmissão.
Se você precisa que a mensagem seja realmente entregue, então, use TCP diretamente no lugar, sem o http.
Ou então, confirme o recebimento do lado do servidor e faça retransmissão, caso essa confirmação não chegue.
Para transferir coisas maiores, como arquivos, o TCP é muito mais indicado. Ele controla fluxo, ordenação dos dados, erros e perdas de pacotes. Fazer isso no braço seria perda de tempo e dificilmente ficaria melhor do que nas implementações do TCP. Até pq o TCP roda em modo núcleo e muitas vezes tem porções feitas em hardware.
O HTTP impõe um overhead considerável, principalmente por ser baseado em texto.
Verifique se o seu celular suporta SocketConnection. Se sim, você poderá estabelecer uma conexão TCP sem precisar pagar o preço de estar usando o overloard que o HTTP impõe, ou seja, se transmitir 2 bytes, serão 2 bytes e nada mais.
Do lado do servidor, você terá que desenvolver um programa que aceite esta conexão em uma determinada porta, abra e gerencie este tráfego, afinal, você abriu mão da conveniência que tinha para receber a mensagem usando um Apache,etc…e agora você mesmo é responsável por fazer isto.
É o preço que se paga por querer economizar os bytes na transmissão. É mais trabalho principalmente do lado servidor que agora é vc que tem que gerenciar.
valeu boone, estou fazendo isso mesmo, agora vc perguntou se meu celular suporta SocketConnection, bom isso eu ainda nao testei, pensei que se suportasse HTTPConnection iria suportar SocketConnection, então como q funciona a maioria dos celulares suportam SocketConnection ou não?
[quote=mirv]o servidor funciona como HTTP, recebe uma solicitacao, responde e fecha a conexao, cada vez q o cliente quer algo repete o processo.
antes um simples login gerava aproximadamente 1200 bytes, agora gera em torno de 300 bytes. não testei com UDP, mas pra mim ta bom. valeu.[/quote]
É isso aí…parabéns ! :thumbup:
Você conseguiu porquê não esmoreceu frente as dificuldades, arregaçou as mangas e foi a luta !
Ao contrário de você, o que tenho visto de carinha novo por aí que não tem paciência, não quer saber de pesquisar, quer tudo pronto…meu Deus !!!