Comunicação entre processos distribuídos

Slides:



Advertisements
Apresentações semelhantes
Sistemas Operacionais II N Aula prática Java Sockets, RPC e RMI Eduardo Bezerra.
Advertisements

I/O Carlos Bazilio Depto de Ciência e Tecnologia
Interações cliente/servidor usando o UDP
Sockets Marco Antonio – marcoreis.net Arquiteto de Software Dezembro/2007.
Entrada e Saída Marco Antonio Arquiteto de Software Dezembro/2007.
Ir p/ primeira página Cliente/Servidor Modelo usado para construir aplicações Servidor em número de porta conhecido – Aceita requisições e executa serviços.
Comunicação Distribuída
Programação com sockets API Sockets apareceu no BSD4.1 UNIX em 1981 são explicitamente criados, usados e liberados por aplicações paradigma cliente/servidor.
O conceito de socket Uma comunicação entre dois processos via TCP (ou UDP) é identificada unívocamente por dois pares de valores, que denotam os dois pontos.
Redes de computadores Prof. Nelson Fonseca 2: Camada de Aplicação.
Streams Java.
Sistemas Paralelos e Distribuídos
Conceitos de Sockets Universidade Federal do Rio Grande do Sul (UFRGS)
Desenvolvimento de Aplicações Distribuídas
Invocação de Métodos Remotos RMI
Comunicação Inter-Processos
26/09/2005 LCMI - DAS - UFSC 1 Introdução aos Sockets Java Fábio Favarim DAS – Departamento de Automação e Sistemas UFSC – Universidade.
1 Introdução aos Sockets (Java) Tiago Semprebom DAS – Departamento de Automação e Sistemas UFSC – Universidade Federal de Santa Catarina.
PROGRAMAÇÃO DISTRIBUÍDA EM JAVA Verão/2001
FEUPDEECRedes de Computadores, 4º Ano de EEC, ramo de ACI Sockets Abril, 98Isidro Vila Verde 1 Formato das estruturas de dados Estrutura.
Prof. Edmundo R. M. Madeira Carlos R. Senna MC823 Laboratório de Teleprocessamento e Redes Primeiro Semestre 2007.
Camada de Transporte: Portas, Sockets, Aplicações em Rede
Introdução à Programação Distribuída em Java
Infra-Estrutura de Comunicação (IF678)
Anália Lima (alc5) Bruno Gentilini (bgda) Eduardo Souza (efs) Ivan França (ilfn) Infra-Estrutura de comunicação Aula Prática Programação de Sockets TCP.
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 – CIn/UFPE Davi Duarte Denyson José Eduardo Souza Ivan França Rafael Lima.
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 – CIn/UFPE Davi Duarte Cynthia Raphaella Ivan França Jéssica Barbalho Larissa Paz Paulo Fernando.
Comunicação entre processos usando Sockets
Streams –input e output
Chamada Remota de Procedimentos
Programação com sockets
Programação de Sistemas de Comunicação
Java Avançado Luiz Carlos d´Oleron SJCP Java Sockets.
Comunicação Entre Processos Sockets - Java
Arquivos if669 - Introdução à Programação Monitoria de IP Igor Ebrahim (ies) Nicole Sultanum (nbs2) Paulo Borba (phmb)
T. D. S. I. PARA WEB Prof. Emmanuel Nolêto. Java RMI.
Java e Serviço de Transporte Vitor Brandi Junior.
Comunicação entre Processos - Sockets. Conceitos Básicos Sockets são uma forma de IPC ( InterProcess Communication ) fornecida pela 4.3 BSD que fornecem.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Infra-Estrutura de Comunicação (IF678) Aula Prática CIn/UFPE Rafael Lucena Roberta Mota Rubens Lopes Rodolfo Santos João Pedro Cordeiro.
Profa. Patrícia A. Jaques
Programando sockets em python
Implementando comunicação em JAVA via Sockets Alcides Calsavara - Leonardo R. Nunes -
Programação distribuída e concorrente
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
Estrutura de Controle em JAVA
Desenvolvimento de Aplicações TCP/IP com Sockets Márcio de Sousa Dias
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP Hugo Simões Original por: Flávio.
Redes de Computadores I Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Arquitetura de Redes de Computadores – Luiz Paulo Maia Camada de Transporte1 Arquitetura de Redes de Computadores Luiz Paulo Maia Camada de Transporte.
Socket em Java.
Introdução à Programação com Sockets Fernando Jorge Silveira Filho Daniel Sadoc Menasché
Comunicação Cliente-Servidor Linguagem para Internet II Prof. Marcelo da Silveira Siedler SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL.
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP CIn/UFPE Bruno Gentilini Eduardo Souza Amora Albuquerque Anália.
Java – Remote Method Invocation (RMI)
Programação Distribuída em Java Aula Na aula passada vimos: I/O Streams Filtros Readers and Writers.
Programação Distribuída em Java Aula Na aula passada vimos: Introdução –O que podemos fazer na rede Conceito de Rede –Máquinas conectadas Protocolos.
Programação Distribuída em Java Aula Na aula passada vimos Domain Name Server –Funcionamento básico O pacote java.net –Sua finalidade A classe InetAddress.
Camada de Aplicação Prof. Horácio. Objetivo Apresentar os detalhes específicos dos tipos de aplicação; Apresentar o modelo cliente-servidor; Apresentar.
Passagens de Mensagens Prof. Dr. Norian Marranghello
Administração e Projeto de Redes Material de apoio Camada de Transporte Cap.4 10/02/2010.
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP Professor: Paulo Gonçalves CIn/UFPE.
Protocolos de Comunicação e Passagem de Mensagens
Sockets Redes de Comunicação de Dados Prof. Esp. Cristiano José Cecanho.
2: Application Layer 1 Capítulo 2: Camada de Aplicação  2.1 Princípios da camada de aplicação  2.2 Web e HTTP  2.3 FTP  2.4  SMTP, POP3, IMAP.
SOCKET - É um canal de comunicação entre processos que estabelece uma conexão entre eles na forma de cliente-servidor. Por meio de sockets, os computadores.
Capítulo 2 Redes de computadores e a Internet Camada de aplicação Prof. Gustavo Wagner.
Curso Superior em Redes de Computadores Camada de Aplicação Prof. Sales Filho.
Soquetes (1) SOCKET Uma interface local, criada por aplicações, ponto final de comunicação no qual os processos de aplicação podem tanto enviar quanto.
Transcrição da apresentação:

Comunicação entre processos distribuídos Sistemas distribuídos

Programação distribuída Sockets Estilo: envia/recebe (send/receive) Característica: eficiente RPC Chamada remota de procedimento Transparência e facilidade de programação Objetos distribuídos Transparência, facilidade e todos os benefícios da programação orientada a objetos Execução mais lenta Exemplos: DCOM CORBA Java RMI etc.

Programação distribuída Sockets: Uma interface local, criada e possuida pelas aplicações, controlada pelo S.O. atráves do qual os processos podem trocar mensagens.

Programação distribuída Sockets: Comunicação entre processos que se utiliza das funcionalidades dos protocolos de rede para realizar a troca de informações entre emissor e receptor. A programação por portas (sockets) se utiliza dos serviços de redes, sejam eles orientados ou não orientados a conexão.

Programação distribuída Sockets: Um socket pode ser entendido como uma porta de um canal de comunicação que permite a um processo executando em um computador enviar/receber mensagens para/de outro processo que pode estar sendo executado no mesmo computador ou num computador remoto.

Programação distribuída Sockets: Tipos de serviço de transporte: Datagrama - transporte não orientado a conexão e sem controle de erros ( protocolo UDP) DataStream - transporte orientado a conexão com controle de erros ( protocolo TCP )

Programação distribuída Sockets: Abaixo temos uma figura com que representa a comunicação de sockets e a pilha TCP/IP

Unix BSD Sockets Interface padrão para comunicação entre processos em redes TCP/IP Nasceu com o Unix de Berkeley Os projetistas tentaram usar ao máximo as chamadas de sistema do Unix Implementada hoje em vários Sos Programar com sockets pode ser visto como desenvolver um protocolo de aplicação

Identificação de aplicações

Berkeley Sockets

Berkeley Sockets

Sockets - visão conceitual

Tipos de sockets Serviço com conexão Implementa um stream de dados (SOCK_STREAM) Protocolo TCP (tipicamente) Serviço sem conexão Implementa um serviço de datagramas (SOCK_DGRAM) Protocolo UDP (tipicamente) Acessa diretamente a camada de rede (SOCK_RAW) Serviço de baixo nível Protocolo IP (tipicamente

Principais funções da API

Serviço com Conexão (TCP) Servidor socket () bind () listen () Cliente socket () accept () connect () Estabelecimento de conexão bloqueado Dados (pedido) write () read () write () Dados resposta) read () close () close ()

Serviço sem Conexão (UDP) Servidor socket () bind () Cliente recvfrom () socket () bloqueado Dados (pedido) sendto () sendto () Dados resposta) recvfrom () close () close ()

Estrutura Típica de um Servidor

Números de portas 1-255 reservadas para serviços padrão portas “bem conhecidas” 256-1023 reservado para serviços Unix 1-1023 Somente podem ser usadas por usuários privilegiados (super-usuário) 1024-4999 Usadas por processos de sistema e de usuário 5000- Usadas somente por processos de usuário

Sockets em Java Java modernizou a API para trabalhar com sockets O programador não precisa chamar todas as funções, algumas chamadas são automáticas Exemplos Socket: equivalente a socket e bind ServerSocket: equivalente a socket, bind e listen Sockets são implementados no pacote java.net A transmissão e o envio de dados são feitos através de classes do pacote java.io de maneira semelhante à escrita e leitura em arquivos Classes DataInputStream, DataOutputStream, etc., wjqs@di.ufpe.br

import java.net.*; import java.io.*; public class SimpleJavaClient { public static void main(String[] args) { try { Socket s = new Socket("127.0.0.1", 9999); InputStream i = s.getInputStream(); OutputStream o = s.getOutputStream(); String str; do { byte[] line = new byte[100]; System.in.read(line); o.write(line); i.read(line); str = new String(line); System.out.println(str.trim()); } while ( !str.trim().equals("bye") ); s.close(); } catch (Exception err) { System.err.println(err);

import java.io.*; import java.net.*; public class SimpleJavaServer { public static void main(String[] args) { try { ServerSocket s = new ServerSocket(9999); String str; while (true) { Socket c = s.accept(); InputStream i = c.getInputStream(); OutputStream o = c.getOutputStream(); do { byte[] line = new byte[100]; i.read(line); o.write(line); str = new String(line); } while ( !str.trim().equals("bye") ); c.close(); } catch (Exception err){ System.err.println(err);

Sockets em C/C++ C é a linguagem “básica” para programação com sockets De maneira diferente de Java, programar com sockets em C/C++ envolve utilizar todas as chamadas da API

#include ... #include <sys/socket.h> int main(int argc, char **argv) { int s; struct sockaddr_in dest; char msg_write[100], msg_read[100]; s = socket(AF_INET, SOCK_STREAM, 0)); bzero(&dest, sizeof(dest)); dest.sin_family = AF_INET; dest.sin_port = htons(9999); inet_aton(“127.0.0.1”, &dest.sin_addr.s_addr); connect(s, (struct sockaddr*)&dest, sizeof(dest)); do { scanf("%s",msg_write); write (s, msg_write, strlen(msg_write)+1); read (s, msg_read, MAXBUF); } while (strcmp(msg_read,"bye")); close(s); }

#include ... #include <sys/socket.h> int main(int argc, char **argv) { int s, client_s; struct sockaddr_in self, client; int addrlen = sizeof(client); char msg_write[100], msg_read[100]; s = socket(AF_INET, SOCK_STREAM, 0); bzero(&self, sizeof(self)); self.sin_family = AF_INET; self.sin_port = htons(9999); self.sin_addr.s_addr = INADDR_ANY; bind(s, (struct sockaddr*)&self, sizeof(self)); listen(s, 5); while (1) { client_s = accept(s, (struct sockaddr*)&client, &addrlen); do { read (client_s, msg_read, MAXBUF); write (client_s, msg_read, strlen(msg_read)+1); } while (strcmp(msg_read,"bye")); close(client_s); }

Sockets sem Conexão (Java) Cliente: socket = new DatagramSocket( ); message = new DatagramPacket(msg,length,Addr,Port); reply = new DatagramPacket( new byte[100], 100 ); socket.send( message ); socket.receive( reply ); socket.close(); Servidor: socket = new DatagramSocket(porta); socket.receive( message );

Sockets sem Conexão (C) Cliente: s = socket(AF_INET, SOCK_DGRAM, 0); sendto(s, msg, length, flags, destaddr, addrlen); recvfrom(s, msg, length, flags, fromaddr, addrlen); Servidor: bind(s, dest, sizeof(dest));