Recursos especiais neste artigo:
Artigo no estilo Solução Completa
Autores:Robison Cris Brito, Andrei Carniel e Ricardo Ogliari
Para que serve o artigo:
A comunicação entre dispositivos móveis e servidores remotos é uma ótima alternativa ainda hoje para tratar das limitações presentes nestes “pequenos” aparelhos, tais como o teclado para entrada de dados limitado, as capacidades de armazenamento e processamento reduzido e até mesmo a pequena tela que existe na maioria dos aparelhos. Desta forma, inúmeras tecnologias para comunicação podem ser empregadas nos dispositivos móveis, algumas delas já conhecidas pelos programadores desktop e web, tais como HTTP, Socket TCP, Socket UDP e WebService, outras exclusivas do mundo móvel, como SMS e MMS.
Este artigo apresenta o desenvolvimento de uma aplicação para a plataforma Android que faz uso de conectividade usando a rede da operadora, embora existam alternativas para a comunicação usando tecnologias como WI-FI ou Bluetooth. Em muitas situações, os aplicativos comerciais precisam comunicar-se com servidores utilizando a rede da operadora. Desta forma, este artigo apresenta os principais protocolos utilizados, como tirar proveito deles, suas vantagens e desvantagens.
Este trabalho é útil aos desenvolvedores iniciantes na tecnologia Android que desejam começar no mundo da conectividade para aprender a utilizar na plataforma algumas tecnologias de comunicação tais como HTTP, Socket TCP, Socket UDP, SMS, MMS e WebService. Também é aconselhável sua leitura, principalmente a seção “Comparando as tecnologias de comunicação” onde é feita uma comparação entre as tecnologias de comparação.
Uma das principais funções dos aparelhos celulares e tablets hoje em dia é a conectividade com a grande rede mundial de computador – a Internet. Uma das formas desta conectividade acontecer é via rede da operadora, que pode acontecer em qualquer lugar em que esta esteja acessível.
A conectividade com a Internet via dispositivos móveis é possível já que a velocidade das redes de comunicações está cada vez mais rápida, permitindo ficar conectado através de conexões rápidas por várias horas seguidas. Outro atrativo é o custo destes serviços de conectividade via operadora que estão cada vez mais baratos.
Para quem deseja manter-se conectado, mas sem custos, uma alternativa são as conexões locais, seja via rede sem fio – wifi – ou através de conexões Bluetooth, desta forma, pode-se navegar na Internet sem passar pela rede da operadora, e consequentemente, sem custos.
Segundo um estudo realizado pela Acision, 1/3 dos acessos às redes sociais, tais como twitter e facebook, são realizados a partir dos dispositivos portáteis. Também aumentou consideravelmente o número de pessoas que utilizam os dispositivos portáteis para acesso a conta de e-mails, feeds de notícias, sites de compras, entre muitos outros recursos online.
A evolução dos dispositivos móveis é tão grande que hoje é possível acessar uma página na Internet a partir de um smartphone da mesma maneira que acessamos e visualizamos na tela do nosso computador. Também já é possível termos acesso a serviços de rede que até então só estavam disponíveis em computadores desktop, tais como acesso a servidores telnet, contas de ftp, terminais remotos, entre muitos outros serviços.
Junto com a evolução da rede de comunicação, acontece a evolução nas possibilidades de utilização dos protocolos de rede a partir de aplicativos móveis. Atualmente, por exemplo, é possível desenvolver aplicativos Android que façam uso de protocolos já conhecidos no desktop tais como o http, socket TCP, socket UDP ou WebService, além da possibilidade de utilização de serviços quase que exclusivos dos dispositivos móveis, tais como SMS e MMS.
A seguir, uma rápida apresentação de cada um destes protocolos, mostrando suas características e conceitos, para na sequência, apresentar o desenvolvimento de um aplicativo Android que faça uso de todos estes protocolos.
HTTP
HTTP (Hyper Text Transfer Protocol) é o protocolo de rede mais utilizado atualmente, sendo este o protocolo utilizado pelos browsers na recuperação dos dados dos servidores web. Ele é responsável pelo acesso da maioria das páginas na Internet existentes hoje (tem como características um formato simples para acessar sites).
O endereço de uma página web é referenciado por uma URL (ex: http://www.google.com.br). O servidor que fornece este serviço, na maioria das vezes, utiliza a porta 80 para isso.
O HTTP também fornece uma alternativa para acesso a dados de forma criptografada, o HTTPS (Hyper Text Transfer Protocol Secure), que nada mais é que o protocolo HTTP com uma camada adicional que permite que os dados sejam transmitidos por meio de uma conexão criptografada, a qual pode ser verificada a autenticidade do servidor por meio de Certificados Digitais (a porta padrão é 443).
Outra característica do HTTP é que o mesmo é baseado no método pedido-resposta, ou seja, um cliente (um navegador de Internet qualquer, por exemplo) envia um pedido para um servidor de páginas na web. Este, por sua vez, responde com os dados da página (imagens, links, sons, textos, etc.), desfazendo a conexão logo na sequência. Esse protocolo utiliza o formato ASCII e também transfere dados de hipermídia.
Um pedido HTTP é composto por quatro partes básicas: o método, que é a ação que deverá ser realizada; a URI (Universal Resource Identifier), que será a informação a ser requisitada; a versão do protocolo atual; informações adicionais complementares às demais informações.
A resposta HTTP é formada por três elementos: linha de status que indica sucesso ou falha; descrição da informação, contida na resposta (Metainformação/MIME); e a própria informação que foi requisitada.
O HTTP também possui uma lista de códigos respostas que é enviado junto com a resposta da requisição. Principais códigos de Status são:
- 200 (Document Follows) à pedido bem sucedido, a informação requisitada será retornada;
- 401 (Unautorized) à as informações requisitadas são de acesso restrito, sendo necessário autenticar;
- 403 (Forbidden) à acesso proibido;
- 404 (Page Not Found ) à retorna esse erro quando uma página da web não foi encontrada;
- 500 (Server error) à erro no servidor da web.
O conhecimento destes códigos de retorno é importante para um correto tratamento no aplicativo desenvolvido.
Socket TCP
Este protocolo costuma ser utilizado para transmissão de dados baseado em conexão. Nele, é realizada uma conexão entre o cliente e o servidor, e a partir daí é criado um canal de comunicação seguro para a troca de dados, criando assim um elo bidirecional entre os dois programas. O Socket TCP garante a entrega de dados, utilizando para isso uma comunicação através do protocolo TCP (Transmission Control Protocol).
O Socket TCP necessita de quatro parâmetros para a comunicação: endereço IP de origem, a porta de origem, endereço IP de destino e a porta de destino. Nesse método, ao ser iniciado, o servidor fica a espera de conexões. Após a conexão, é aberto um canal de comunicação bidirecional, onde o servidor envia os dados requisitados e o cliente envia um acknowledgment (esta “resposta” serve para identificar se os pacotes foram recebidos ou não, caso não receba, o servidor reenvia os pacotes perdidos). Cada socket, seja ele cliente ou servidor, diz quantos bytes pode receber, se o receptor estiver lento o emissor tem que esperar, assim, ambos (cliente e servidor) trabalham na mesma velocidade.
Outra característica é que o Socket TCP é a base de outros protocolos como, por exemplo, o HTTP. Desta forma, por ser mais simples, o Socket TCP costuma ser mais rápido.
Datagrama ou Socket UDP
Modelo de protocolo não orientado a conexão, o datagrama, também conhecido como Socket UDP, divide os dados em partes e os envia pela rede para um determinado endereço de destino. A entrega, ordem de chegada e a hora de chegada, não são garantidas nesse tipo de protocolo.
Os dados que serão enviados são divididos em partes, cada uma destas partes é chamada de pacote, podendo variar de tamanho dependendo do hardware que irá recebê-lo. Após os dados estarem divididos em pequenas partes, é colocado nele o número do IP de destino e a porta que irá receber os pacotes, além do endereço IP de origem.
Com os pacotes prontos, eles serão enviados pela rede. Cada pacote terá seu próprio caminho e seu tempo para transmissão do transmissor para o receptor.
Quando chegam ao destino será removido o cabeçalho e serão feitas as checagens dos pacotes para saber se está tudo certo. Se não ocorrer erro, o datagrama é reagrupado na ordem correta e remontada sua informação original.
Como o uso do datagrama não é baseado em conexão (ao contrário do que acontece no Socket TCP e no protocolo HTTP, por exemplo), a velocidade de comunicação entre o cliente e o servidor é maior, entretanto, não existe garantia de entrega dos dados neste protocolo.
SMS
O SMS (Short Message Service ou Serviço de Mensagem Curta) é um serviço de troca de mensagens curtas entre celulares e smartphones. Seu funcionamento é bem simples, as mensagens são trocadas entre os aparelhos em um esquema chamado “store-and-forward”, ou seja, o aparelho envia a mensagem, esta será recebida por um controle da operadora de serviço que irá processar a mensagem e enviá-la ao destinatário, bem como a cobrança das mensagens que pode variar de operadora para operadora.
O SMS permite o envio de até 160 caracteres, porém este número pode variar um pouco dependendo da operadora. O usuário também tem a opção de enviar mensagens maiores, mas neste caso o conteúdo é transmitido em múltiplas mensagens.
Outra característica do SMS é o fato de outras entidades poderem enviar e receber as mensagens como, por exemplo, computador desktop e servidores web. Caso o usuário não esteja disponível para receber a mensagem, ela será armazenada em um banco de dados da SMSC (Short Message Service Center), e assim que o usuário estiver disponível ele automaticamente enviará a mensagem. Não existe garantia de entrega.
MMS
Multimidia Messaging Service é o acrônimo para um serviço chamado de MMS, sendo este um protocolo que aproveita o sucesso do SMS e possibilita aos usuários enviarem e receberem mensagens multimídia (clipe de vídeo com anotação de texto, mapas, gráficos, layouts, cartoons, animações, clipe de áudio, reprodução sincronizada de áudio, texto, vídeo e/ou foto, entre muitos outros), sendo que na maioria das operadoras as mensagens MMS podem ter até 30 KB, muito superior aos 160 caracteres disponíveis no SMS.
A MMS permite três tipos de comunicação: celular-a-celular, celular-e-mail e celular-outras aplicações, além de possuir quatro tipos básicos de serviços: mensagens multimídia originadas de celular, mensagens multimídia terminadas em celular, mensagens multimídia originadas em uma aplicação e mensagens multimídia terminadas em uma aplicação.
Inicialmente o aparelho codifica a mensagem com arquivo multimídia, semelhante ao envio de MIME (padrão da Internet que estende o e-mail). Após isso, a mensagem é encaminhada para a operadora MMSC (Multimidia Messaging Service Center) e esta se encarrega de enviar a mensagem ao destinatário.
Web Service
Web Service é, provavelmente, uma das tecnologias mais interessante para a troca de informações na Internet. Ele permite que diferentes empresas, mesmo utilizando tecnologias e plataformas distintas, conectem-se de maneira padrão e executem procedimentos remotos através da utilização do protocolo padrão da internet – HTTP. Tudo isso com grande velocidade e facilidade.
O uso de Web Service é muito interessante, você pode acessar rotinas de validação de cartão de crédito, endereçamento postal (CEP), calcular valores de fretes dos sites de comércio eletrônico, news de empresas, entre outros serviços. Devido à popularização dessa abordagem, uma gama gigantesca de produtos já está pronto em algum lugar, você só precisa ir lá e acessar, de maneira rápida e fácil, aliviando o processamento na máquina cliente, já que toda a lógica de negócio fica no servidor que hospeda os serviços. Outra diferença em relação às abordagens de desenvolvimento “tradicionais”, baseadas principalmente no uso de rotinas locais, é que os Web Services oferecem facilidades na disponibilização e na atualização de suas funcionalidades.
Em relação à fácil disponibilização, a empresa que desenvolve um módulo específico, por exemplo, uma rotina de validação de cartão de crédito, não precisa ficar distribuindo para todos os clientes este módulo, ela necessita somente publicar esse serviço em um local específico e os interessados em utilizá-lo ficarão responsáveis por realizar as devidas configurações para acessar esse serviço.
...Confira outros conteúdos:
Programador Mobile
Desenvolvimento de aplicativos para...
Conceitos básicos para programar para...
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.