Upload
jessica-brunelli-bento
View
215
Download
0
Embed Size (px)
Citation preview
Sockets
Redes de Comunicação de DadosProf. 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 65536 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
socketbindlisten
acceptconnectrecvfrom
recvsendtosendclose
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
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