Download - Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Transcript
Page 1: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Sockets

Redes de Comunicação de DadosProf. Esp. Cristiano José Cecanho

Page 2: 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.

Page 3: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

O que é preciso?

• Uma porta livre.

• O endereço IP com o qual irá corresponder.

Page 4: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

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.

Page 5: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Visualizar Portas abertas

Page 6: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

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.

Page 7: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

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.

Page 8: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Funções da API

socketbindlisten

acceptconnectrecvfrom

recvsendtosendclose

Page 9: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Um exemplo em JAVA - terminal

• Abra o Eclipse e crie um novo Projeto Java com o nome ChatSocket.

Page 10: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Adicione um pacote controller

Page 11: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Adicione duas classes, uma Cliente, outra Servidor

Page 12: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.
Page 13: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Três atributos para a classe cliente

Page 14: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Adicionar um Socket

Page 15: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Corrija a importação

Page 16: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

PrintStream

Page 17: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

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.

Page 18: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Tentar conexão

Page 19: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Em caso de erro

• Caso um erro aconteça, precisamos saber onde ocorreu este erro para saber solucioná-lo.

Page 20: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

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.

Page 21: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

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.

Page 22: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Transfira as informações

Page 23: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Tentativa de conexão

Page 24: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Tentativa de conexão

Page 25: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Tratando erros e fechando a conexão

Page 26: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Testar a aplicação

• Inicie o servidor e depois o cliente.

• Botão direito sobre a classe Servidor, opção Run As, Java Application.

Page 27: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Exemplo

Page 28: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

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.

Page 29: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Este é o IP de quem deseja se comunicar

Page 30: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Mesma porta do Servidor

Page 31: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Então o que deseja fazer?

Page 32: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Passando uma mensagem

Page 33: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

No servidor

Page 34: Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.

Finalizando a conexão