Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho
Introdução Socket, soquete, ou melhor dizendo, portas de acesso são o elo de comunicação entre aplicações de dispositivos distintos. Este promove um canal de transmissão de dados (stream - fluxo) biderecional.
O que é preciso? Uma porta livre. O endereço IP com o qual irá corresponder.
Portas Dependendo da versão de seu sistema operacional, existe portas disponíveis, onde as primeiras 1024 portas são reservadas para serviços padrão. Fora isso, aplicações instaladas podem requisitar portas para atualizações, entre outras operações.
Visualizar Portas abertas
Modos de operação Orientado à conexão: ideologia da rede de telefones, precisam os dois dispositivos estar ativos para que a transmissão aconteça. Ex: chat direcionado. Protocolo: TCP. Modo sem conexão: ideologia dos correios, ao enviar uma carta você não tem certeza se ela foi entregue corretamente. Ex: download que não permite reiniciar do ponto em que parou. Protocolo: UDP.
API’s Todo sistema operacional possui um conjunto de API’s (Interface de Programação para Aplicações) e com sockets não seria diferente. Exemplos: – gethostbyname. – getservbyname. – getprotobyname.
Funções da API socket bind listen accept connect recvfrom recv sendto send close
Um exemplo em JAVA - terminal Abra o Eclipse e crie um novo Projeto Java com o nome ChatSocket.
Adicione um pacote controller
Adicione duas classes, uma Cliente, outra Servidor
Três atributos para a classe cliente
Adicionar um Socket
Corrija a importação
PrintStream
Tentar conexão Circundar toda tentativa com try {} catch(){}. Isto faz com que ao invés de mostrar um erro grotesco, exiba uma mensagem agradável, ou imprima o erro para o programador.
Tentar conexão
Em caso de erro Caso um erro aconteça, precisamos saber onde ocorreu este erro para saber solucioná- lo.
Fechando a conexão Somente uma garantia que a porta aberta realmente seja fechada e não seja disponível para uma tentativa de acesso indesejada.
Classe Servidor Não adianta testar ainda, pois o principal não esta executando. Para esta aplicação ter efeito, precisamos de um servidor ativo. Inicie a edição como do modo anterior, palavras reservadas tem a primeira letra em maiúscula, aperte ctrl + barra de espaço para auto completar.
Transfira as informações
Tentativa de conexão
Tratando erros e fechando a conexão
Testar a aplicação Inicie o servidor e depois o cliente. Botão direito sobre a classe Servidor, opção Run As, Java Application.
Exemplo
Inicie o cliente Você não verá nada no servidor enquanto não existir pelo menos um cliente. Repita os passos para iniciar o servidor para iniciar o cliente.
Este é o IP de quem deseja se comunicar
Mesma porta do Servidor
Então o que deseja fazer?
Passando uma mensagem
No servidor
Finalizando a conexão