Buscar

aula4_SD_Socket_RPC

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 51 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 51 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 51 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Prof. Ítalo Quirino Brilhante 
 Não existe distinção entre clientes e 
servidores em uma arquitetura de objetos 
distribuídos; 
 Cada entidade é um objeto que fornece 
serviços para outros objetos e recebe serviços 
de outros objetos; 
 Os objetos se comunicam através de um 
sistema de middleware chamado “requisitor 
de objetos”. 
 É o processo de explorar grandes 
quantidades de dados à procura de padrões 
consistentes, como regras de associação ou 
sequências temporais, para detectar 
relacionamentos sistemáticos entre variáveis, 
detectando assim novos subconjuntos de 
dados. 
 Este é um tópico recente em ciência da 
computação, porém faz uso de várias 
técnicas de: 
◦ Estatística; 
◦ Recuperação de Informações; 
◦ Inteligência Artificial; 
◦ Reconhecimento de Padrões. 
 A mineração de dados é formada por um 
conjunto de ferramentas e técnicas que 
através do uso de algoritmos de 
aprendizagem, são capazes de explorar um 
conjunto de dados, ajudando a evidenciar 
padrões nestes dados e auxiliando na 
descoberta de conhecimento. 
 Este conhecimento pode ser apresentado por 
estas ferramentas de diversas formas: 
agrupamentos, hipóteses, regras, árvores de 
decisão e grafos. 
 O ser humano sempre aprendeu observando 
padrões, formulando hipóteses e testando-as 
para descobrir regras. A novidade da “era do 
computador” é o volume enorme de dados 
que não pode mais ser examinado à procura 
de padrões em um prazo razoável. 
 A solução é instrumentalizar o próprio 
computador para detectar relações que sejam 
novas e úteis. A mineração de dados surge 
para esta finalidade e pode ser aplicada tanto 
para a pesquisa científica como para 
impulsionar a lucratividade da empresa 
madura, inovadora e competitiva. 
 A Arquitetura de Objetos Distribuídos é a 
mais adequada para permitir que a mineração 
de dados possa ser realizada e um novo 
conhecimento possa ser gerado. 
 Exemplos middleware para objetos 
distribuídos: 
◦ CORBA; 
◦ RMI; 
◦ DCOM. 
 É um canal de comunicação entre duas 
máquinas por determinadas aplicações 
comunicando entre si; 
 Em uma conexão via Socket, sempre existe 
um computador servidor e um computador 
cliente. Todavia, uma mesma máquina pode 
exercer ambos os papéis. 
 O computador servidor abre uma porta de 
comunicação, executando “listening”, até que 
um computador cliente tente realizar uma 
conexão; 
 
 1- Cria um Socket de escuta (listening) em 
uma determinada porta; 
 2 – Processa requisições de conexões, cria o 
Socket com a máquina cliente; 
 3 – Processa o pedido de fluxo; 
 4 – Utiliza o fluxo, conversa com a outra 
máquina; 
 5 – Fecha o fluxo; 
 6 – Fecha o Socket. 
 1- Cria a conexão, cria um socket com algum 
servidor; 
 2 – Cria um fluxo de comunicação no socket; 
 3 – Utiliza o fluxo, conversa com a outra 
máquina; 
 4 – Fecha o fluxo; 
 5 – Fecha o Socket. 
 
 Apenas existe comunicação entre duas 
máquinas se houver conexões de entrada e 
saída estabelecidas entre os dois 
computadores, através de uma determinada 
porta do computador de origem à uma porta 
do computador de destino. 
 Construtores: 
◦ Socket (String, int); 
 
 Métodos: 
◦ OutputStream getOutputStream( ) – Retorna a saída 
do fluxo do Socket; 
◦ InputStream getInputStream( ) – Retorna a entrada 
do fluxo do Socket; 
◦ close( ) – Fecha o Socket. 
 
 Construtores: 
◦ ServerSocket (int porta); - Porta que ficará em 
escuta; 
 
 Métodos: 
◦ accept( ) – Aguarda conexão na porta em escuta; 
◦ close( ) – Fecha o Socket. 
 
 Temos dois tipos de serviços de transporte 
via socket: o confiável orientado a cadeia de 
bytes e os datagramas não confiáveis. O 
protocolo na qual é implementado o primeiro 
é o TCP, já o segundo é implementado no 
protocolo UDP. 
 Inicialmente o cliente deve contatar o 
servidor. Para isso, o processo servidor já 
deve estar executando o programa antes de 
ser contatado, além de já ter criado o socket 
que aceita o contato do cliente. 
 O cliente contata o servidor criando um 
socket TCP local e especifica o endereço IP e 
o número da porta do processo servidor. 
Quando o servidor é contatado, ele cria um 
novo socket para se comunicar com o cliente, 
permitindo assim a liberação do socket de 
“boas-vindas” para que possa ser contatado 
por outros clientes. 
 No início do programa, deverá ser inserida a 
linha seguinte, que importa a biblioteca que 
contém as classes que são utilizadas em uma 
aplicação com Socket (java.net.*) e as classes 
de recepção de informação do teclado ou 
Socket do cliente ou servidor (java.io.*). 
 import java.net.*; 
 Import java.io.*; 
 Criamos um objeto socket, que é o socket do 
lado do servidor, número_da_porta deverá ser 
substituído pelo número da porta pela qual a 
aplicação cliente usará para conectar com o 
servidor. Este socket esperará a requisição de 
conexão de um cliente. 
 ServerSocket bemVindoSocket = new 
ServerSocket(numero_da_porta); 
 Como o programa servidor normalmente fica 
funcionando por tempo indefinido, coloca-se 
o restante das instruções dentro de um loop 
infinito, como segue: 
 while (true) { 
 
 } 
 A próxima instrução cria um objeto 
conexaoSocket do tipo Socket quando um 
cliente conectar ao servidor. 
 O TCP se encarregará de criar uma conexão 
virtual direta entre este socket e o socket do 
cliente de forma que todos os bytes serão 
enviados ao servidor na ordem certa. 
 Socket conexaoSocket = 
bemVindoSocket.accept(); 
 No caso do envio de um objeto do tipo String 
do cliente para o servidor, utilizamos as 
seguintes instruções para receber os dados 
do cliente: 
 BufferedReader cadeiaCliente = new 
BufferedReader (new InputStreamReader 
(conexaoSocket.getInputStream()); 
 
 DataOutputStream servidorParaCliente = new 
DataOutputStream 
(conexaoSocket.getOutputStream()); 
 
 String clienteSentenca = 
cadeiaCliente.readLine(); 
 Depois de processar a informação enviada 
pelo cliente, queremos enviar um outro 
objeto (mensagem_para_cliente) do tipo 
String de volta para o cliente, como um 
mensagem de dado recebido ou algo do tipo. 
 
 //transforma a linha em maiúsculas 
 sentencaCapturada = 
clienteSentenca.toUpperCase() + "\n"; 
 
 //envia a linha maiúscula para o cliente 
 servidorParaCliente.writeBytes 
(sentencaCapturada); 
 Com isso termina-se o programa do lado do 
servidor. Agora analisaremos o programa 
cliente; 
 Como no caso do programa servidor, o 
código inicia com a importação das 
bibliotecas que contém as classes de sockets 
e de envio de informações. 
 import java.io.*; 
 import java.net.*; 
 Primeiramente, criamos o socket que 
conectará com o servidor. O primeiro 
parâmetro passado ao construtor é o nome 
do servidor, por exemplo, 127.0.0.1 se a 
aplicação servidor estiver rodando no mesmo 
computador que a aplicação cliente. O 
segundo parâmetro é o número da porta que 
é informado ao socket servidor. 
 //cria o stream do teclado 
 BufferedReader cadeiaUsuario = new 
BufferedReader(new 
InputStreamReader(System.in)); 
 
 //cria os streams (encadeamentos) de 
entrada e saída com o servidor 
 Socket clienteSocket = new 
Socket("localhost", 6789); 
 Após a criação do socket cliente, temos que 
criar os objetos de cadeia que serão ligados 
ao socket. O objeto clienteParaServidor será a 
cadeia que enviará informações para o 
servidor e o objeto cadeiaServidor será a 
cadeia que receberá informações do servidor. 
 //cria os streams (encadeamentos) de 
entrada e saída com o servidor 
 DataOutputStreamclienteParaServidor = new 
DataOutputStream 
(clienteSocket.getOutputStream()); 
 
 BufferedReader cadeiaServidor = new 
BufferedReader (new InputStreamReader 
(clienteSocket.getInputStream())); 
 Utilizaremos o mesmo caso do servidor, e 
enviaremos (sentenca) e receberemos 
(clienteParaServidor) dois objetos do tipo 
String para exemplificar. 
 //lê a linha do teclado e coloca em sentença 
 sentenca = cadeiaUsuario.readLine(); 
 
 //envia a linha para o server 
 clienteParaServidor.writeBytes (sentenca + 
"\n"); 
 Agora já podemos imprimir o resultado e fechar 
o socket, e também a conexão TCP entre cliente 
e servidor. 
 
 //lê uma linha do server 
 sentencaModificada = cadeiaServidor.readLine(); 
 
 //apresenta a linha do server na tela 
 System.out.println("Para o servidor " + 
sentencaModificada); 
 
 //fecha o cliente 
 clienteSocket.close(); 
 Sockets UDP são mais rápidos que sockets 
TCP; 
 São mais simples, porém menos confiáveis; 
 Em UDP não é necessário abrir conexão, 
deste modo a comunicação ocorre apenas 
com o envio da mensagem; 
 Um mensagem é um datagrama, que é 
composto de um remetente (sender) e um 
receptor (receiver) e a mensagem (content). 
 Exercício prático em Java. 
 RPC: Remote Procedure Call; 
 RPC: Chamada Remota de Procedimento; 
 É uma tecnologia de comunicação entre 
processos que permite a um programa de 
computador chamar um procedimento em 
outro espaço de endereçamento (outra 
máquina ligada em rede). 
 O desenvolvedor não necessita se preocupar 
com detalhes de implementação da interação 
remota; 
 Do ponto de vista de código-fonte, a 
chamada se assemelha a chamadas de 
procedimentos locais. 
 É uma tecnologia para a implementação do 
modelo cliente-servidor de computação 
distribuída; 
 Uma chamada de procedimento remoto é 
iniciada pelo cliente enviando uma mensagem 
para um servidor remoto para executar um 
procedimento específico. 
 Uma resposta é retornada ao cliente. Uma 
diferença entre chamadas de procedimento 
remotas e as locais é que a chamada remota 
pode falhar por problemas de rede. 
 Utilizada pela Xerox em 1981; 
 Na década de 90, a Microsoft desenvolveu o 
MSRPC, mais tarde sendo desenvolvido o 
DCOM com base neste; 
 Atualmente utiliza-se XML como linguagem 
de descrição de interface e HTTP como 
protocolo de rede para formar web services.

Outros materiais