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

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

Embed Size (px)

Citation preview

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