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

Post on 07-Apr-2016

215 views 0 download

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

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