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

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

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

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