Comunicação usando soquetes.

Tamanho: px
Começar a partir da página:

Download "Comunicação usando soquetes."

Transcrição

1 Soquetes Um soquete é definido como uma extremidade de um canal de comunicação. Um par de processos (ou threads) se comunica em uma rede utilizando um par de soquetes - um para cada processo. Um soquete é formado por um endereço IP concatenado com um número de porta. Em geral, os soquetes utilizam uma arquitetura cliente-servidor. O servidor espera por pedidos de clientes ouvindo a uma porta específica. Assim que um pedido é recebido, o servidor aceita uma conexão do soquete cliente para completar a conexão. Os servidores que implementam serviços específicos (como telnet, ftp, mail e http) ouvem portas bem conhecidas (um servidor telnet ouve a porta 23, um servidor ftp ouve a porta 21, e um servidor Web (http) ouve a porta 80). Todas as portas abaixo de 1024 são consideradas bem conhecidas; podemos usá-las para implementar tais serviços padrão. Quando um thread cliente inicia um pedido de conexão, ele recebe uma porta atribuída pelo host. Essa porta tem um número arbitrário > Por exemplo, se um cliente no hostxcom endereço IP desejar estabelecer uma conexão com um servidor Web (que está ouvindo a porta 80) no endereço , o host X poderá receber a porta A conexão consistirá então em um par de soquetes: ( :1625) no host X e ( :80) no servidor Web. Os pacotes que viajam entre os hosts são entregues aos threads apropriados, com base no número da porta de destino. Todas as conexões devem ser exclusivas. Portanto, se outro processo também no host X desejasse estabelecer outra conexão com o mesmo servidor Web, a ele seria atribuído um número de porta > 1024 e Isso garante que todas as conexões consistem em um único par de soquetes. Servidores e threads Em geral, os servidores podem ter vários pedidos concorrentes. A quantidade de tempo que um cliente pode ter de esperar para ser atendido por um servidor de mono-thread pode ser inaceitável. Para resolver essa situação, um servidor pode lidar com pedidos concorrentes atribuindo um thread separado para atender cada pedido que chega. Por exemplo, um servidor Web atarefado pode atribuir um thread separado para atender cada solicitação de página Web. hostx ( servidor Web ( Comunicação usando soquetes. Soquetes Java A linguagem Java fornece três tipos diferentes de soquetes. Os soquetes orientados a conexão (TCP) são implementados com a classe Socket. Os soquetes sem conexão (UDP) utilizam a classe DatagramSocket. Um terceiro tipo é a classe MulticastSocket, que é uma subclasse da classe DatagramSocket. Um soquete de difusão seletiva (multicast) permite que um dado seja enviado para múltiplos destinatários simultaneamente. Servidor de data e hora Como um exemplo de soquetes baseados em Java, agora vamos apresentar várias classes Java para implemen-

2 tar um servidor de data e hora com múltiplos threads. Sua operação permite que os clientes solicitem a data e hora do servidor. O servidor ouve a porta 5155, embora a porta possa ser qualquer número arbitrário > Quando uma conexão é recebida, o servidor cria um novo thread para atender o pedido. Esse novo thread retorna ao cliente a data e hora do dia. O servidor O servidor de data e hora cria um ServerSocket que especifica que ele ouvirá a porta Em seguida, ele começa a escutar a porta com o método accept ( ). O servidor bloqueia no método accept ( ) esperando que algum cliente solicite uma conexão. Quando um pedido de conexão é recebido, accept ( ) retorna um soquete que o servidor pode usar para se comunicar com o cliente. O servidor cria um novo thread para atender o pedido e passa o soquete para esse thread. O servidor, em seguida, retoma o processo de escuta por mais pedidos. Os detalhes que ilustram como o servidor se comunica com o soquete estão especificados na classe Connection. Cada thread Connection recebe o soquete para o cliente ao qual ele fornecerá a data e hora do dia. O thread primeiro estabelece um objeto PrintWriter que será usado para comunicação com o cliente. Um objeto PrintWriter permite que o thread escreva no soquete usando os métodos de saída normais print( ) e p r i n t l n ( ). O thread envia a hora para o cliente chamando o método println( ). Assim que tiver gravado a data e hora do dia no soquete, ele fecha o soquete e o thread termina. Para iniciar o servidor, a instrução java Server é digitada na linha de comandos. O servidor permanece em execução enquanto escuta a porta 5155 esperando por conexões. Sempre que receber um pedido de conexão de um cliente, o servidor criará um thread Connection separado para atender o pedido e, em seguida, retomará o processo de escuta da porta import Java.net.*; public class Server { public Server ( ) { // cria o soquete try { s = new ServerSocket(5155) ; } catch (java.io.ioexception e) { System. out. println(e) ; System. exit(l) ; // OK, agora escuta as conexões System. out. print1n("server is listening.") ; try while (true) { client = s.accept( ); // cria um thread separado // para atender o pedido c = new Connection(client) ; c.start( ); catch (java.io.ioexception e) { System. out. println(e) ;

3 public static void main(string args[ ]) Server timeofdayserver = new Server( ) private ServerSocket s; private Socket client; private Connection c; } Servidor de data e hora. O cliente Um cliente se comunica com o servidor criando um soquete e se conectando à porta onde o servidor está escutando. Ele pode simplesmente estabelecer uma conexão telnet com a porta Por exemplo, o comando telnet abre um soquete e solicita uma conexão com o servidor no endereço l na porta servidor responde com a data e hora do dia. O endereço IP é um endereço especial conhecido como host local. Quando um computador se refere ao endereço , ele está fazendo referência a si mesmo. Esse mecanismo permite que um cliente e um servidor no mesmo host se comuniquem usando o protocolo TCP/IP mesmo se o computador não estiver conectado a uma rede. O cliente cria um Socket e solicita uma conexão com o servidor na porta Assim que a conexão é feita, o cliente pode ler do soquete usando instruções de I/O de arquivo normais. Depois que tiver recebido a hora do servidor, o cliente fecha o soquete e termina. Para executar o programa cliente, a instrução java Cl ient é digitada na linha de comandos. import java.net.*; import java.io.*; public class Connection extends Thread { public Connection(Socket s) { outputline = s; public void run( ) { try { // cria um objeto PrintWriter // com esvaziamento automático. // Isso permite IO de arquivo // comum no soquete. PrintWriter pout = new PrintWriter (outputline.getoutputstream( ), true); // agora envia uma mensagem ao cliente pout.println("the Date and Time is" + new java.util.date( ).tostring( )); // agora fecha o soquete outputline.close( ); } catch (java.io.loexception e) { System.out.println(e); private Socket outputline; Thread para atender pedidos de data e hora.

4 import java.net.*; import java.io.*; public class Client public Client( ) { try { Socket s = new Socket(" ",5155); InputStream in = s.get!nputstream( ); BufferedReader bin = new BufferedReader (new InputStreamReader(in)); System.out.println(bin.readLine( )); s.close( ); í catch (java.io.ioexception e) { System.out.println(e); System.exit(l); public static void main(string args[ ]) Client client = new Client( ); O cliente. Chamadas de procedimento remoto A comunicação usando soquetes - embora comum e eficiente - é considerada uma forma de comunicação de baixo nível entre processos ou threads distribuídos. Um dos motivos é que os soquetes só permitem a troca de um fluxo não-estruturado de bytes entre os threads em comunicação. É responsabilidade da aplicação cliente ou servidor impor uma estrutura aos dados. Vamos analisar dois métodos alternativos de comunicação de nível mais alto. A primeira abordagem é uma chamada de procedimento remoto (RPC - Remote Procedure Call). Um sistema RPC permite que um thread chame um procedimento ou função em outro processo. Esse outro processo pode estar em um espaço de endereçamento separado no mesmo computador ou pode estar executando em um computador distinto que é conectado por uma rede. A semântica de RPCs permite ao thread solicitante ativar o procedimento remoto exatamente como faria com um procedimento local. A vantagem das RPCs em relação aos soquetes é que o sistema RPC gerencia o canal de comunicação, por isso os programas aplicativos podem ser escritos de modo que a localização de um procedimento, quer local ou remoto, seja transparente. Invocação de método remoto A segunda abordagem que exploramos é a invocação de método remoto (RMI, remote method invocation), um recurso Java semelhante a RPCs. A RMI permite que um thread invoque um método em um objeto remoto. Os objetos são considerados remotos se residirem em uma máquina virtual Java (JVM -Java Virtual Machine) distinta. Portanto, o objeto pode estar em uma JVM diferente no mesmo computador ou em um host remoto conectado por uma rede. Existem duas diferenças fundamentais entre RMI e RPCs. Em primeiro lugar, as RPCs suportam apenas programação procedural, na qual somente procedimentos ou funções remotos podem ser chamados. A RMI baseiase em objetos: suporta a invocação de métodos em objetos remotos. Em segundo lugar, os parâmetros dos procedimentos remotos na RPC são estruturas de dados comuns; com a RMI é possível passar objetos como parâmetros para os métodos remotos. Permitindo que um programa Java invoque métodos em objetos remotos, a RMI torna possível aos usuários desenvolver aplicações Java que sejam

5 distribuídas por toda a rede. JVM JVM Invocação de método remoto. Para tornar os métodos remotos transparentes ao cliente e ao servidor, a RMI implementa o objeto remoto usando stubs e skeletons. Um stub é um proxy (representante) do objeto remoto; ele reside junto ao cliente. Quando o cliente invoca um método remoto, é esse stub para o objeto remoto que é chamado. Esse stub no cliente é responsável por criar um pacote que consiste no nome do método a ser invocado no servidor e nos parâmetros desse método, um processo conhecido como marshalling dos parâmetros. O stub envia então esse pacote (agregação) para o servidor, onde ele é recebido pelo skeleton do objeto remoto. O skeleton é responsável por efetuar a operação de unmarshalling (extração) dos parâmetros e por invocar o método desejado no servidor. O skeleton agrega o valor de retorno (ou exceção, se houver) em um pacote e retorna-o ao cliente. O stub efetua a extração do valor de retorno e o passa para o cliente. Vamos demonstrar como esse processo funciona. Considere que um cliente deseja invocar um método em um objeto remoto Server com a assinatura somemethod(object, Object) que retorna um valor boolean. O cliente executa a instrução boolean vai = Server.someMethod(A, B); A chamada a somemethod( ) com os parâmetros A e B invoca o stub para o objeto remoto. O stub agrega em um pacote os parâmetros A e B e o nome do método que deverá ser invocado no servidor, enviando o pacote para o servidor. O skeleton no servidor extrai os parâmetros e invoca o método somemethod ( ). A implementação real de somemethod ( ) reside no servidor. Assim que o método for concluído, o skeleton agrega o valor bool ean retornado de somemethod ( ), enviando esse valor de volta para o cliente. O stub extrai esse valor de retorno e o passa para o cliente. cliente objeto remoto Agregação e extração de parâmetros

6 Felizmente, o nível de abstração que a RMI fornece torna os stubs e skeletons transparentes, permitindo que o desenvolvedor Java escreva programas que invoquem os métodos distribuídos exatamente como invocariam métodos locais. Entretanto, é fundamental que você compreenda algumas regras sobre o comportamento da passagem de parâmetros. Se os parâmetros agregados forem objetos locais (não-remotos), eles serão passados por cópia usando uma técnica chamada serialização de objetos. No entanto, se os parâmetros também forem objetos remotos, eles são passados por referência. No nosso exemplo, se A for um objeto local e B um objeto remoto, A será serializado e passado por cópia, e B será passado por referência. Isso, por sua vez, permitiria que o servidor chamasse métodos em B remotamente. Passar objetos remotos como parâmetros é uma técnica RJV1I importante. Se os objetos locais deverão ser passados como parâmetros aos objetos remotos, eles devem implementar a interface java.io.serializable. Muitos objetos na API Java principal implementam Seria-1i zabl e, permitindo que eles sejam usados com RMI. A serialização de objetos permite que o estado de um objeto seja escrito em um fluxo de bytes. Agora, vamos apresentar uma solução atribuída via troca de mensagens para o problema do produ-tor-consumidor usando RMI. Essa solução distribuída consistirá em um objeto remoto para mensagens que serão passadas por referência, permitindo que os threads consumidor e produtor invoquem os métodos send( ) e receive( ) remotamente. Objetos remotos Definimos objetos remotos primeiro declarando uma interface que especifica os métodos que podem ser chamados remotamente. No exemplo da solução via troca de mensagens para o problema do produtor-consumidor, são os métodos send( ) e receive( ). Essa interface deve estendera interface java.rmi. Re-mote, que identifica o objeto como sendo remoto. Em seguida, cada método declarado na interface deve tratar a exceção java.rmi.remoteexception. Import java.util.*; Import java.rmi.*; public interface MessageQueue extends j ava. rmi.remote { public void send(0bject item) throws java.rmi.remot eexception; public Object receive( ) throws java.rmi. Remote Exceptio n; A interface MessageQueue.

7 Import java.util.*; Import Java.rmi.*; public class MessageQueuelmpl extends java.rmi.server.unicastre moteobject implements MessageQueue { public MesssageQueuelmpl ( ) throws RemoteExce ption { queue = new Vector( ); } public synchronized void send(0bject item) throws RemoteExce ption { // Figura 15.9 } public synchronized Object receive( ) throws RemoteExce ption public static void main(string args[ ]) { System.setSecurityManag er (new RMISecurityManager( )); try { MessageQueue server = new MessageQueuelmpl( ); Naming.rebind("MessageServer", server); System.out.println("Serv er Bound"); } catch(exception e) { System.err.println(e); private Vector queue; Implementação da interface MessageQueue. A classe que define o objeto remoto deve implementar a interface MessageQueue. Além de definir os métodos da interface, a classe também deve estender j ava. rmi. server. Uni cãs tremoteob j ect. Estender Uni castremoteobject permite a criação de um objeto remoto único que escuta os pedidos da rede utilizando o esquema padrão RMI de soquetes para comunicação de rede. Esse objeto também inclui um método main ( ). Esse método instala um gerente de segurança especial, RMISecuri tymanager. O papel do RMISecuri tymanager é impor restrições de segurança em classes mal-comportadas ou maliciosas que podem ser carregadas da rede. Se um gerente de segurança não estiver instalado, a RMI permitirá que classes sejam carregadas apenas do sistema de arquivos local e não a partir da rede. Em seguida, uma instância do objeto será criada e registrada no registro RMI que executa no servidor, através do método rebind( ). Nesse caso, a instância de objeto registra a si própria com o nome MessageServer. Observe também que a estrutura da classe MessageQueuelmpl deve gerar uma RemoteExcepti on se uma falha de comunicação ou de

8 rede impedir a RMI de exportar o objeto remoto. Observe que as implementações dos métodos send( ) e receive( ) são declaradas como synchronized. Também podemos usar a sincronização de threads Java para impedir o acesso concorrente a objetos remotos., // Isto implementa um envio não bloqueante public synchronized void send(0bject item) throws RemoteException { queue.addelement(item); System.out.println("Producer entered " * item + " size = " + queue.size( )); // Isto implementa uma recepção não bloqueante public synchronized Object receive( ) throws RemoteException { Object item; if (queue.size( ) == 0) return null; else { item = queue.firstelement( ); queue.removeel ementat(0); System.out.println("Consumer removed " + item + " size = " + queue.size( )); return item; Os métodos send e receive. Acesso ao objeto remoto Assim que um objeto é registrado no servidor, um cliente (conforme indicado na Figura 15.10) pode obter uma referência a esse objeto remoto a partir do registro RMI que executa no servidor usando o método Na-ming. lookup ( ). A RMI fornece um esquema de pesquisa baseado em URL que usa a forma rmi: //host/ob-jectname, no qual host é o nome IP do servidor no qual o objeto remoto objectname reside. objectname é o nome do objeto remoto especificado pelo servidor no método rebind( ) (nesse caso, MessageServer). O cliente também deve instalar um RMISecuri tymanager para garantir a segurança dos stubs remotos que podem ser carregados via rede. Assim que o cliente tiver uma referência ao objeto remoto, ele criará threads produtor e consumidor separados, passando a cada thread uma referência ao objeto remoto. Observe que os threads produtor e consumidor invocam os métodos remotos send ( ) e recei vê ( ) como invocações de método normais. import java.util.*; import java.rmi.*; public class Factory { public Factory( ) { // objeto remoto MessageQueue mailbox; System.setSecurityManager(new RMISecurityManager( ));

9 try { mailbox = (MessageQueue)Naming.lookup ("rmi:// /messageserver"); Producer producerthread = new Producer(mailBox); Consumer consumerthread = new Consumer(mailBox); producerthread.start( ); consumerthread.start( ); } catch (Exception e) { System.err.println(e); // produtor e consumidor chamarão este método para dormir public static void napping( ) { int sleeptime = (int) (NAP_TIME * Math.random( )); try { Thread.sleep(sleepTime*1000); } catch(interruptedexception e) { }.... public static void main(string args[ ]) { Factory client = new Factory( ); } private static final int NAP_TIME = 5; O cliente. Execução dos programas Agora vamos demonstrar as etapas necessárias para executar os programas de exemplo. Para fins de simplicidade, estamos considerando que todos os programas estão executando no host local. No entanto, a comunicação ainda é considerada remota, porque os programas cliente e servidor estão executando em suas próprias JVMs. l. Compile todos os arquivos fonte. 2. Gere o stub e o skeleton. A ferramenta RMIc é usada para gerar os arquivos de classe stub e skeleton, o que é realizado quando o usuário digita rmi c MessageQueuelmpl na linha de comandos; isso cria os arquivos MessageQueueImpl_Skel.class e MessageQueueImpl_Stub.class. (Se você estiver executando esse exemplo em dois computadores diferentes, certifique-se de que todos os arquivos de classe - incluindo as classes stub - estão disponíveis em cada computador. Também é possível carregar as classes dinamicamente usando RMI, um tópico além do escopo deste texto mas discutido nos textos mencionados nas Notas bibliográficas.) 3. Inicie o registro e crie o objeto remoto. Para iniciar o registro em plataformas UNIX, o usuário pode digitar rmiregistry & No Windows, o usuário poderá digitar start rmiregistry Esse comando inicia o registro no qual o objeto remoto será registrado. Em seguida, crie uma instância do objeto remoto com

10 java MessageQueuelmpl Esse objeto remoto se registrará usando o nome MessageServer. 4. Faça referência ao objeto remoto. A instrução java Factory é digitada na linha de comandos para iniciar o programa cliente. Esse programa obterá uma referência do objeto remoto MessageServer e criará os threads produtor e consumidor, passando para cada thre-ad a referência do objeto remoto. Os threads produtor e consumidor agora podem invocar os métodos send( ) e receive( ) no objeto remoto. CORBA RMI é uma tecnologia que permite que os threads invoquem métodos em objetos distribuídos. Entretanto, RMI é uma tecnologia Java nativa e por isso requer que todas as aplicações distribuídas sejam escritas em Java. Muitos sistemas existentes que talvez também queiramos que sejam distribuídos são escritos em C, C + +, COBOL ou Ada. Nenhum protocolo de comunicação discutido até agora fornece um mecanismo conveniente para essas aplicações diferentes se comunicarem. import java.útil,*; class Producer extends Thread public Producer(MessageQueue m) { mbox = m; l public void run( ) { Date message; while (true) { Factory.napping( ); message = new Date( ); try { mbox.send(message}; catch (Exception e) { System.err.pritnln(e); private MessageQueue mbox; Thread produtor. Common Object Request Broker Architecture (CORBA) é um middleware - uma camada de software intermediária - que permite a comunicação entre aplicações cliente e servidor heterogêneas. Por exemplo, um programa C+ + pode usar CORBA para acessar um serviço de banco de dados escrito em COBOL. CORBA permite que aplicações escritas em diferentes linguagens se comuniquem usando uma interface definition language (IDL) e um Object Request Broker (ORB). Uma IDL permite a um objeto distribuído - como um banco de dados - descrever uma interface para os serviços que fornece. A IDL é uma linguagem de programação genérica; permite que um serviço descreva a si próprio

11 independentemente de qualquer linguagem específica. Para comunicar com um servidor, um cliente precisa se comunicar apenas com a interface especificada via IDL. O objeto servidor implementa a interface especificada pela IDL. O ORB forma a espinha dorsal de COBRA, permitindo que os clientes invoquem métodos em objetos distribuídos e aceitem valores de retorno. Existe um ORB no cliente e no servidor, e um protocolo, o Internet InterORB Protocol (IIOP), que especifica como os ORBs podem ser comunicar. import java.util.*; class Consumer extends Thread public Consumer (MessageQueue m) mbox = m; public void run( ) { Date message; while (true) { Factory.napping( try message = (Date)mbox.receive( ); i f (message! = null) // Consome o item catch (Exception e) { System.err.println(e); private MessageQueue mbox; Thread consumidor. Quando uma aplicação cliente s olicita uma referência para um objeto remoto, é responsabilidade do ORB do cliente localizar o objeto remoto no sistema distribuído. O ORB do cliente também é responsável por rotear as invocações de método remoto para o servidor apropriado e por aceitar os resultados do servidor. O ORB do servidor permite que o servidor registre novos objetos CORBA e também é responsável por aceitar pedidos de ORBs de clientes para chamar métodos no servidor. O ORB do servidor também devolve valores de retorno para o cliente. Um sistema CORBA funciona da seguinte maneira. Assim que um cliente tiver uma referência a um objeto remoto, quaisquer invocações de métodos para esse objeto são feitas através do stub cliente. Esse stub utiliza o ORB do cliente para se comunicar com o servidor. Quando o ORB do servidor recebe um pedido do cliente para invocar um método, ele chama o skeleton apropriado, que, por sua vez, invoca a implementação do método remoto no servidor. Os valores de retorno são devolvidos pelo mesmo caminho. Em muitos aspectos, o comportamento do ORB é muito semelhante ao de RMI. No entanto, RMI é uma tecnologia Java para Java. CORBA fornece interoperabilidade entre clientes e servidores heterogêneos, permitindo a comunicação entre aplicações escritas em diferentes linguagens.

12 Registro de objetos Tanto RMI quanto CORBA são sistemas de objetos distribuídos: os objetos são distribuídos em uma rede e as aplicações podem se comunicar com os objetos distribuídos. Um recurso importante desses sistemas é um serviço de registro de objeto, com o qual um objeto se registra. As aplicações que desejarem utilizar um objeto distribuído obtêm uma referência ao objeto através desse serviço. O rmiregistry atua como um serviço de registro para RMI. Assim que o registro é iniciado, um objeto remoto se registra com um nome exclusivo usando o método Naming.rebind ( ). Os clientes usam esse nome quando solicitam ao servidor de registro uma referência ao objeto remoto. Usando RMI, um cliente obtém uma referência a um objeto remoto usando o método Naming.lookup ( ). Em um sistema CORBA, o ORB no servidor é responsável por fornecer o serviço de registro.

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Soquetes Um soquete é formado por um endereço IP concatenado com um número de porta. Em geral, os soquetes utilizam uma arquitetura cliente-servidor. O servidor espera por pedidos

Leia mais

Invocação de Métodos Remotos

Invocação de Métodos Remotos Invocação de Métodos Remotos Java RMI (Remote Method Invocation) Tópicos Tecnologia RMI Introdução Modelo de camadas do RMI Arquitetura Fluxo de operação do RMI Passos para implementação Estudo de caso

Leia mais

Adriano Reine Bueno Rafael Barros Silva

Adriano Reine Bueno Rafael Barros Silva Adriano Reine Bueno Rafael Barros Silva Introdução RMI Tecnologias Semelhantes Arquitetura RMI Funcionamento Serialização dos dados Criando Aplicações Distribuídas com RMI Segurança Exemplo prático Referências

Leia mais

Java 2 Standard Edition. Fundamentos de. Objetos Remotos. Helder da Rocha www.argonavis.com.br

Java 2 Standard Edition. Fundamentos de. Objetos Remotos. Helder da Rocha www.argonavis.com.br Java 2 Standard Edition Fundamentos de Objetos Remotos Helder da Rocha www.argonavis.com.br 1 Sobre este módulo Este módulo tem como objetivo dar uma visão geral, porém prática, da criação e uso de objetos

Leia mais

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução Chamadas Remotas de Chamada Remota de Procedimento (RPC) ou Chamada de Função ou Chamada de Subrotina Método de transferência de controle de parte de um processo para outra parte Procedimentos => permite

Leia mais

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes Objetos Distribuídos - Programação Distribuída Orientado a Objetos Luiz Affonso Guedes Introdução Conceitos básicos programação distribuída + programação orientada a objetos = Objetos distribuídos Motivação

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS CUP Disk Memoey CUP Memoey Disk Network CUP Memoey Disk Remote Method Invocation (RMI) Introdução Solução JAVA para Objetos Distribuídos Um objeto existe em uma máquina É possível

Leia mais

Invocação de Métodos Remotos RMI (Remote Method Invocation)

Invocação de Métodos Remotos RMI (Remote Method Invocation) Invocação de Métodos Remotos RMI (Remote Method Invocation) Programação com Objetos Distribuídos Um sistema de objetos distribuídos permite a operação com objetos remotos A partir de uma aplicação cliente

Leia mais

Sistemas Paralelos e Distribuídos - 2003/2004 Curso: Matemática /Informática Sistemas Distribuídos - 2003/2004 Curso: Ensino da Informática

Sistemas Paralelos e Distribuídos - 2003/2004 Curso: Matemática /Informática Sistemas Distribuídos - 2003/2004 Curso: Ensino da Informática Java RMI - Remote Method Invocation Folha 5-1 No modelo de programação orientada a objectos, vimos que um programa consiste numa colecção de objectos que comunicam entre si através da invocação dos seus

Leia mais

MIDDLEWARE Aplicativos RMI, RPC e eventos Camadas Protocolo Requesição-Respostal Middleware Representação Externa dos Dados Sistemas Operacionais

MIDDLEWARE Aplicativos RMI, RPC e eventos Camadas Protocolo Requesição-Respostal Middleware Representação Externa dos Dados Sistemas Operacionais RMI JAVA MIDDLEWARE Aplicativos RMI, RPC e eventos Protocolo Requesição-Respostal Camadas Middleware Representação Externa dos Dados Sistemas Operacionais RMI REMOTE METHOD INVOCATION Invocação remota

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos LICENCIATURA EM COMPUTAÇÃO Prof. Adriano Avelar Site: www.adrianoavelar.com Email: [email protected] Relembrando... Mecanismos de Comunicação Middleware Cenário em uma rede Local

Leia mais

Aula 30 - Sockets em Java

Aula 30 - Sockets em Java Aula 30 - Sockets em Java Sockets Sockets são estruturas que permitem que funções de software se interconectem. O conceito é o mesmo de um soquete (elétrico, telefônico, etc...), que serve para interconectar

Leia mais

Num sistema de objectos distribuídos, dois conceitos são fundamentais.

Num sistema de objectos distribuídos, dois conceitos são fundamentais. Folha 10-1 Java RMI - Remote Method Invocation No modelo de programação orientada a objectos, vimos que um programa consiste numa colecção de objectos que comunicam entre si através da invocação dos seus

Leia mais

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente Java RMI - Remote Method Invocation Callbacks Folha 9-1 Vimos, na folha prática anterior, um exemplo muito simples de uma aplicação cliente/ servidor em que o cliente acede à referência remota de um objecto

Leia mais

Programação com sockets (em Java)

Programação com sockets (em Java) com sockets (em Java) Prof. Dr. Julio Arakaki Depto. Ciência da 1 Comunicação entre processos // aplicações - é um dos mecanismos mais utilizados - Java oferece modos de utilização:. TCP ( Transmission

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Marcelo Lobosco DCC/UFJF Comunicação em Sistemas Distribuídos Aula 06 Agenda Modelo Cliente-Servidor (cont.) Invocação Remota de Método (Remote Method Invocation RMI) Visão Geral

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Faculdades SENAC Análise e Desenvolvimento de Sistemas 28 de abril de 2010 Principais suportes de Java RMI (Remote Method Invocation), da Sun Microsystems DCOM (Distributed Component Object Model), da

Leia mais

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB) Uma Introdução à Arquitetura Francisco C. R. Reverbel 1 Copyright 1998-2006 Francisco Reverbel O Object Request Broker (ORB) Via de comunicação entre objetos (object bus), na arquitetura do OMG Definido

Leia mais

INF1013 MODELAGEM DE SOFTWARE

INF1013 MODELAGEM DE SOFTWARE INF1013 MODELAGEM DE SOFTWARE Departamento de Informática Ivan Mathias Filho [email protected] Programa Capítulo 18 Sockets OLadoServidor O Lado Cliente Múltiplos Clientes 1 Programa Capítulo 18 Sockets

Leia mais

Java : Comunicação Cliente-Servidor.

Java : Comunicação Cliente-Servidor. Java : Comunicação Cliente-Servidor. Objetivo: Capacitar o aluno a desenvolver uma aplicação servidora para múltiplos clientes. Apresentar as classes Socket e ServerSocket, classes de fluxo de dados, a

Leia mais

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve - 981648-9

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve - 981648-9 Laboratório de Computação VI JAVA IDL Fabricio Aparecido Breve - 981648-9 O que é Java IDL? Java IDL é uma tecnologia para objetos distribuídos, ou seja, objetos em diferentes plataformas interagindo através

Leia mais

Sistemas Distribuídos Comunicação entre Processos em Sistemas Distribuídos: Middleware de comunicação Aula II Prof. Rosemary Silveira F. Melo Comunicação em sistemas distribuídos é um ponto fundamental

Leia mais

Princípios de Sistemas Distribuídos. Tecnologias utilizadas em sistemas distribuídos Aula 5

Princípios de Sistemas Distribuídos. Tecnologias utilizadas em sistemas distribuídos Aula 5 Princípios de Sistemas Distribuídos Tecnologias utilizadas em sistemas distribuídos Aula 5 Conceitos de comunicação entre processos Interprocess Communication (IPC) Sistemas distribuídos são construídos

Leia mais

SISTEMAS DISTRIBUIDOS

SISTEMAS DISTRIBUIDOS 1 2 Caracterização de Sistemas Distribuídos: Os sistemas distribuídos estão em toda parte. A Internet permite que usuários de todo o mundo acessem seus serviços onde quer que possam estar. Cada organização

Leia mais

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Tutorial RMI (Remote Method Invocation) por Alabê Duarte Tutorial RMI (Remote Method Invocation) por Alabê Duarte Este tutorial explica basicamente como se implementa a API chamada RMI (Remote Method Invocation). O RMI nada mais é que a Invocação de Métodos

Leia mais

INE5380 - Sistemas Distribuídos

INE5380 - Sistemas Distribuídos INE5380 - Sistemas Distribuídos Object Request Broker e CORBA Por: Léo Willian Kölln - 0513227-4 Novembro de 2006 ORB Object Request Broker ORB aqui será tratado como um Middleware que permite a construção

Leia mais

Capítulo VI CORBA. Common Object Request Broker Architecture. [Cardoso2008] Programação de Sistemas Distribuídos em Java, Jorge Cardoso, FCA, 2008.

Capítulo VI CORBA. Common Object Request Broker Architecture. [Cardoso2008] Programação de Sistemas Distribuídos em Java, Jorge Cardoso, FCA, 2008. Common Object Request Broker Architecture [Cardoso2008] Programação de Sistemas Distribuídos em Java, Jorge Cardoso, FCA, 2008. From: Fintan Bolton Pure CORBA SAMS, 2001 From: Coulouris, Dollimore and

Leia mais

COMUNICAÇÃO INTER-PROCESSOS JAVA RMI e RPC. Prof. Cesar Augusto Tacla http://www.dainf.ct.utfpr.edu.br/~tacla

COMUNICAÇÃO INTER-PROCESSOS JAVA RMI e RPC. Prof. Cesar Augusto Tacla http://www.dainf.ct.utfpr.edu.br/~tacla PR UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ COMUNICAÇÃO INTER-PROCESSOS JAVA RMI e RPC Prof. Cesar Augusto Tacla http://www.dainf.ct.utfpr.edu.br/~tacla 1 1. Conceitos Básicos a. Invocação remota (RPC/RMI)

Leia mais

1 a. Sumário. 1. Conceitos Básicos a. Invocação remota (RPC/RMI) b. Semântica de invocação remota c. Invocação remota de métodos (RMI)

1 a. Sumário. 1. Conceitos Básicos a. Invocação remota (RPC/RMI) b. Semântica de invocação remota c. Invocação remota de métodos (RMI) PR UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ COMUNICAÇÃO INTER-PROCESSOS JAVA RMI e RPC Prof. Cesar Augusto Tacla http://www.dainf.ct.utfpr.edu.br/~tacla 1. Conceitos Básicos a. Invocação remota (RPC/RMI)

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Comunicação Remota Gustavo Reis [email protected] 1 Comunicação entre processos está no coração de todo sistema distribuído. Não tem sentido estudar sistemas distribuídos

Leia mais

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET 1 IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET Daniel da Silva Carla E. de Castro Franco Diogo Florenzano Avelino [email protected]

Leia mais

Middleware de Aplicações Paralelas/Distribuídas

Middleware de Aplicações Paralelas/Distribuídas Computação Paralela Middleware de Aplicações Paralelas/Distribuídas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho Outubro 2005 Principais aspectos a gerir pelo Middleware

Leia mais

Comunicação em Sistemas Distribuídos

Comunicação em Sistemas Distribuídos Comunicação em Sistemas Distribuídos Sockets Aplicações Protocolo de Aplicação FTP, SMTP, HTTP, Telnet, SNMP, etc. sockets TCP, UDP IP Data Link Ethernet, Token Ring, FDDI, etc Física Conjunto de APIs

Leia mais

Capítulo II Modelos de Programação Distribuída

Capítulo II Modelos de Programação Distribuída Capítulo II Modelos de Programação Distribuída From: Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 4, Addison-Wesley 2005 From: M. Ben-Ari Principles of Concurrent

Leia mais

Java 2 Standard Edition Fundamentos de

Java 2 Standard Edition Fundamentos de Java 2 Standard Edition Fundamentos de Helder da Rocha www.argonavis.com.br 1 Sobre este módulo Este módulo pretende apenas cobrir conceitos essenciais sobre programação em rede com Java Como criar um

Leia mais

Comunicação via Sockets. Prof. Orlando Loques - IC/UFF. versão 26-04-2001

Comunicação via Sockets. Prof. Orlando Loques - IC/UFF. versão 26-04-2001 Comunicação via Sockets Prof. Orlando Loques - IC/UFF versão 26-04-2001 Referências: - Slides Prof. Alexandre Sztajnberg, UERJ - Capítulo 15, Applied Operating System Concepts, Silberschatz & Galvin; Wiley

Leia mais

Sistemas Distribuídos Métodos de Invocação Remota II. Prof. MSc. Hugo Souza

Sistemas Distribuídos Métodos de Invocação Remota II. Prof. MSc. Hugo Souza Sistemas Distribuídos Métodos de Invocação Remota II Prof. MSc. Hugo Souza Nesta aula, complementando os conceitos que vimos nas aulas anteriores [aula 15], vamos praticar a programação de laboratório

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Comunicação- Protocolos, Tipos, RPC Capítulo 4 Agenda Protocolos em Camadas Pilhas de Protocolos em Sistemas Distribuídos Tipos de Comunicação

Leia mais

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos Descrição Implemente nesta atividade de laboratório um programa em Java utilizando threads

Leia mais

Um pouco do Java. Prof. Eduardo

Um pouco do Java. Prof. Eduardo Um pouco do Java Prof. Eduardo Introdução A tecnologia JAVA é composta pela linguagem de programação JAVA e pela plataforma de desenvolvimento JAVA. Os programas são escritos em arquivos-texto com a extensão.java.

Leia mais

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Comunicação Inter-Processos Sockets e Portas Introdução Sistemas distribuídos consistem da comunicação entre processos

Leia mais

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4 Sistemas Distribuídos Capítulos 3 e 4 - Aula 4 Aula passada Threads Threads em SDs Processos Clientes Processos Servidores Aula de hoje Clusters de Servidores Migração de Código Comunicação (Cap. 4) Fundamentos

Leia mais

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread. 5 THREADS Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread. 5.1 VISÃO GERAL Uma definição mais abrangente para threads é considerá-lo

Leia mais

Sistemas Distribuídos: Conceitos e Projeto Java RMI

Sistemas Distribuídos: Conceitos e Projeto Java RMI Sistemas Distribuídos: Conceitos e Projeto Java RMI Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br 19 de agosto

Leia mais

Olho por olho, e o mundo acabará cego. Mohandas Gandhi

Olho por olho, e o mundo acabará cego. Mohandas Gandhi Sockets Olho por olho, e o mundo acabará cego. Mohandas Gandhi Conectando-se a máquinas remotas. Protocolo Da necessidade de dois computadores se comunicarem surgiram diversos protocolos que permitissem

Leia mais

FTP Protocolo de Transferência de Arquivos

FTP Protocolo de Transferência de Arquivos FTP Protocolo de Transferência de Arquivos IFSC UNIDADE DE SÃO JOSÉ CURSO TÉCNICO SUBSEQUENTE DE TELECOMUNICAÇÕES! Prof. Tomás Grimm FTP - Protocolo O protocolo FTP é o serviço padrão da Internet para

Leia mais

Grupo I [6v] Considere o seguinte extracto de um programa de definição de uma calculadora apenas com a função soma de dois valores reais

Grupo I [6v] Considere o seguinte extracto de um programa de definição de uma calculadora apenas com a função soma de dois valores reais Número: Nome: Página 1 de 5 LEIC/LERC 2012/13, Repescagem do 1º Teste de Sistemas Distribuídos, 25 de Junho de 2013 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração:

Leia mais

RMI: Uma Visão Conceitual

RMI: Uma Visão Conceitual RMI: Uma Visão Conceitual Márcio Castro, Mateus Raeder e Thiago Nunes 11 de abril de 2007 Resumo Invocação de Método Remoto (Remote Method Invocation - RMI) trata-se de uma abordagem Java para disponibilizar

Leia mais

Threads e Sockets em Java. Threads em Java. Programas e Processos

Threads e Sockets em Java. Threads em Java. Programas e Processos Threads em Java Programas e Processos Um programa é um conceito estático, isto é, um programa é um arquivo em disco que contém um código executável por uma CPU. Quando este programa é executado dizemos

Leia mais

THREADS EM JAVA. George Gomes Cabral

THREADS EM JAVA. George Gomes Cabral THREADS EM JAVA George Gomes Cabral THREADS Fluxo seqüencial de controle dentro de um processo. Suporte a múltiplas linhas de execução permite que múltiplos processamentos ocorram em "paralelo" (em computadores

Leia mais

Java RMI. Alcides Calsavara

Java RMI. Alcides Calsavara Java RMI Alcides Calsavara Objetivos Permitir que um método de uma classe Java em execução em uma máquina virtual JVM chame um método de um objeto (instância de uma classe Java) situado em outra máquina

Leia mais

Exemplos práticos do uso de RMI em sistemas distribuídos

Exemplos práticos do uso de RMI em sistemas distribuídos Exemplos práticos do uso de RMI em sistemas distribuídos Elder de Macedo Rodrigues, Guilherme Montez Guindani, Leonardo Albernaz Amaral 1 Fábio Delamare 2 Pontifícia Universidade Católica do Rio Grande

Leia mais

Mecanismos de Comunicação. Sockets em java (http://java.sun.com/docs/books/tutorial/networking/sockets/)

Mecanismos de Comunicação. Sockets em java (http://java.sun.com/docs/books/tutorial/networking/sockets/) Mecanismos de Comunicação Sockets em java (http://java.sun.com/docs/books/tutorial/networking/sockets/) Sockets o que é? Um socket é um mecanismo de comunicação (dois sentidos) entre dois programas a funcionar

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos LICENCIATURA EM COMPUTAÇÃO Prof. Adriano Avelar Site: www.adrianoavelar.com Email: [email protected] Mecanismos de Comunicação Voltando ao exemplo da calculadora... Rede local

Leia mais

APÊNDICE A EXEMPLO DE APLICAÇÃO

APÊNDICE A EXEMPLO DE APLICAÇÃO APÊNDICE A EXEMPLO DE APLICAÇÃO Para ilustrar os três métodos de distribuição de objetos apresentados nesta dissertação iremos, a seguir, mostrar um exemplo de implementação de uma aplicação. São apresentadas

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem

Leia mais

CORBA. Common Object Request Broker Architecture. Unicamp. Centro de Computação Rubens Queiroz de Almeida [email protected]

CORBA. Common Object Request Broker Architecture. Unicamp. Centro de Computação Rubens Queiroz de Almeida queiroz@unicamp.br CORBA Common Object Request Broker Architecture Unicamp Centro de Computação Rubens Queiroz de Almeida [email protected] Objetivos Apresentação Tecnologia CORBA Conceitos Básicos e Terminologia Considerações

Leia mais

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Web Services Web Services Existem diferentes tipos de comunicação em um sistema distribuído: Sockets Invocação

Leia mais

Invocação Remota MC704

Invocação Remota MC704 Invocação Remota MC704 Aplicações distribuídas Aplicação distribuída: conjunto de processos que cooperam entre si para prover um serviço ou realizar uma computação normalmente processos precisam invocar

Leia mais

Capítulo 7 CAMADA DE TRANSPORTE

Capítulo 7 CAMADA DE TRANSPORTE Capítulo 7 CAMADA DE TRANSPORTE INTRODUÇÃO (KUROSE) A Camada de Rede é uma peça central da arquitetura de rede em camadas A sua função é a de fornecer serviços de comunicação diretamente aos processos

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos 11 Objetivos Este capítulo apresenta uma introdução aos sistemas distribuídos em geral Arquiteturas de cliente servidor Características das arquiteturas de 2 e 3 camadas Ambiente

Leia mais

Programação Paralela e Distribuída. Prof. Cidcley T. de Souza

Programação Paralela e Distribuída. Prof. Cidcley T. de Souza Programação Paralela e Distribuída Prof. Cidcley T. de Souza Conteúdo Parte I Introdução aos Sockets Tipos de Sockets Classes Java: InetAddress, Datagram Sockets, Stream Sockets, Output e Input Classes

Leia mais

Desenvolvimento Cliente-Servidor 1

Desenvolvimento Cliente-Servidor 1 Desenvolvimento Cliente- 1 Ambiienttes de Desenvollviimentto Avançados Engenharia Informática Instituto Superior de Engenharia do Porto Alexandre Bragança 1998/99 Ambientes de Desenvolvimento Avançados

Leia mais

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a

Leia mais

Threads e Concorrência em Java (Material de Apoio)

Threads e Concorrência em Java (Material de Apoio) Introdução Threads e Concorrência em Java (Material de Apoio) Professor Lau Cheuk Lung http//www.inf.ufsc.br/~lau.lung INE-CTC-UFSC A maioria dos programas são escritos de modo seqüencial com um ponto

Leia mais

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) C# Remote V0 1

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) C# Remote V0 1 .NET Remoting Programação com Objetos Distribuídos (C. Geyer) C# Remote V0 1 Autoria Autores 1a versão Fabio Augusto Dal Castel colaboração revisão Eduardo F. Seganfredo Rodrigo Gatto C. Geyer Programação

Leia mais

OBJETOS DISTRIBUÍDOS E INVOCAÇÃO REMOTA

OBJETOS DISTRIBUÍDOS E INVOCAÇÃO REMOTA OBJETOS DISTRIBUÍDOS E INVOCAÇÃO REMOTA SUMÁRIO Introdução Comunicação entre objetos distribuídos Eventos e Notificações 1.INTRODUÇÃO Middleware oferece: Transparência de localização Independência de protocolos

Leia mais

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes www.edeyson.com.br

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes www.edeyson.com.br Sistemas Distribuídos RPC x RMI Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Chamada Remota a Procedimento Definição Passagem de Parâmetros STUBS Semântica de Falhas 2 RPC Chamada Remota a

Leia mais

SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010)

SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010) SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010) OBJETIVO GERAL Este trabalho possui o objetivo de exercitar a lógica de programação dos alunos do Terceiro ano do Curso de BSI e também desenvolver

Leia mais

Grupo I [6,6v] Responda com os valores que se observam depois da chamada acontecer. 1 Falta na mensagem de resposta. Valor retornado na chamada

Grupo I [6,6v] Responda com os valores que se observam depois da chamada acontecer. 1 Falta na mensagem de resposta. Valor retornado na chamada Número: Nome: Pági 1 de 6 LEIC/LETI 2013/14, Repescagem do 1º Teste de Sistemas Distribuídos, 1/7/14 Responda no enunciado, apes no espaço fornecido. Identifique todas as folhas. Duração: 1h30m Grupo I

Leia mais

Programação de sockets com TCP

Programação de sockets com TCP Programação de sockets Objetivo: aprender a construir aplicações cliente-servidor que se comunicam usando sockets SOCKET = API (Application Program Interface) Introduzida no BSD4.1 UNIX, 1981 * Explicitamente

Leia mais

Java RMI - Remote Method Invocation. Programação com Objetos Distribuídos (C. Geyer) Java-RMI 1

Java RMI - Remote Method Invocation. Programação com Objetos Distribuídos (C. Geyer) Java-RMI 1 Java RMI - Remote Method Invocation Programação com Objetos Distribuídos (C. Geyer) Java-RMI 1 Autores Autoria Cláudio Geyer Marcelo Castiglia Pereira Local Instituto de Informática UFRGS disciplinas:

Leia mais

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc. Endereços IP Endereços IP IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.) precisam ter endereços. Graças

Leia mais

Modelos de Arquiteturas. Prof. Andrêza Leite [email protected]

Modelos de Arquiteturas. Prof. Andrêza Leite andreza.lba@gmail.com Modelos de Arquiteturas Prof. Andrêza Leite [email protected] Agenda Introdução Arquitetura de Sistemas Distribuídos Clientes e Servidores Peer-to-Peer Variações Vários Servidores Proxy Código Móvel

Leia mais

Middleware. Camada Intermediária de Suporte a Sistemas Distribuídos

Middleware. Camada Intermediária de Suporte a Sistemas Distribuídos Middleware Camada Intermediária de Suporte a Sistemas Distribuídos Alternativas de comunicação entre processos (IPC) Mecanismos de IPC tradicionais (ou de baixo nível) Memória compartilhada, filas de mensagens,

Leia mais

Sistemas Distribuídos Métodos de Invocação Remota IV. Prof. MSc. Hugo Souza

Sistemas Distribuídos Métodos de Invocação Remota IV. Prof. MSc. Hugo Souza Sistemas Distribuídos Métodos de Invocação Remota IV Prof. MSc. Hugo Souza Nesta aula, complementando os conceitos que vimos nas aulas anteriores [aula 15, aula 16 e aula 17], vamos praticar a segunda

Leia mais

FTP - Protocolo. O protocolo FTP é o serviço padrão da Internet para a transferência de arquivos entre computadores.

FTP - Protocolo. O protocolo FTP é o serviço padrão da Internet para a transferência de arquivos entre computadores. FTP FTP - Protocolo O protocolo FTP é o serviço padrão da Internet para a transferência de arquivos entre computadores. A partir do FTP usuários podem receber ou enviar arquivos de ou para outros computadores

Leia mais

Objetos Distribuídos. Nazareno Andrade

Objetos Distribuídos. Nazareno Andrade Objetos Distribuídos Nazareno Andrade O Problema Orientação a objetos é um paradigma poderoso Modularidade, extensibilidade, manutenibilidade Porque distribuir os objetos: Localidade dos objetos Tolerância

Leia mais

REDES DE COMPUTADORES

REDES DE COMPUTADORES REDES DE COMPUTADORES 09/2013 Cap.3 Protocolo TCP e a Camada de Transporte 2 Esclarecimentos Esse material é de apoio para as aulas da disciplina e não substitui a leitura da bibliografia básica. Os professores

Leia mais

Sistemas Distribuídos Arquiteturas Middlewares

Sistemas Distribuídos Arquiteturas Middlewares Sistemas Distribuídos Arquiteturas s Arquitetura Arquitetura de um sistema é sua estrutura em termos dos componentes e seus relacionamentos Objetivo: garantir que a estrutura satisfará as demandas presentes

Leia mais

3. Comunicação em Sistemas Distribuídos

3. Comunicação em Sistemas Distribuídos 3. Comunicação em 3.1.Troca de mensagens As mensagens são objetos de dados cuja estrutura e aplicação são definidas pelas próprias aplicações que a usarão. Sendo a troca de mensagens feita através de primitivas

Leia mais

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web; CONCEITOS INICIAIS Agenda A diferença entre páginas Web, Home Page e apresentação Web; O que é necessário para se criar páginas para a Web; Navegadores; O que é site, Host, Provedor e Servidor Web; Protocolos.

Leia mais

Linguagem de Programação Orientada a Objeto. Introdução a Orientação a Objetos Professora Sheila Cáceres

Linguagem de Programação Orientada a Objeto. Introdução a Orientação a Objetos Professora Sheila Cáceres Linguagem de Programação Orientada a Objeto Introdução a Orientação a Objetos Professora Sheila Cáceres Introdução a Orientação a Objetos No mundo real, tudo é objeto!; Os objetos se relacionam entre si

Leia mais

3 SCS: Sistema de Componentes de Software

3 SCS: Sistema de Componentes de Software 3 SCS: Sistema de Componentes de Software O mecanismo para acompanhamento das chamadas remotas se baseia em informações coletadas durante a execução da aplicação. Para a coleta dessas informações é necessário

Leia mais

Usando Borland DELPHI para implementar aplicações CORBA

Usando Borland DELPHI para implementar aplicações CORBA Página 1 de 10 USANDO BORLAND DELPHI PARA IMPLEMENTAR APLICAÇÕES CORBA por Simone Vey Dutra e César Bridi Introdução A Arquitetura CORBA Criando uma Aplicação CORBA em Delphi Criando um Servidor CORBA

Leia mais

Sockets em Java. Leonardo R. Nunes - [email protected]. 1. Introdução. 2. Sockets TCP/IP

Sockets em Java. Leonardo R. Nunes - leonardo@sumersoft.com. 1. Introdução. 2. Sockets TCP/IP Sockets em Java Leonardo R. Nunes - [email protected] 1. Introdução A comunicação entre processos de software tornou-se indispensável nos sistemas atuais. O mecanismo mais utilizado atualmente para

Leia mais

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 6 Estrutura de Sistemas Operacionais Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

Leia mais

Programação Concorrente em java - Exercícios Práticos Abril 2004

Programação Concorrente em java - Exercícios Práticos Abril 2004 Programação Concorrente em java - Exercícios Práticos Abril 2004 1. Introdução As threads correspondem a linhas de controlo independentes no âmbito de um mesmo processo. No caso da linguagem JAVA, é precisamente

Leia mais

Rede de Computadores

Rede de Computadores Escola de Ciências e Tecnologia UFRN Rede de Computadores Prof. Aquiles Burlamaqui Nélio Cacho Luiz Eduardo Eduardo Aranha ECT1103 INFORMÁTICA FUNDAMENTAL Manter o telefone celular sempre desligado/silencioso

Leia mais

Grupo I [7v] 1. [1,0] Apresente o conteúdo do IDL relativo a este programa. Assuma PROGRAM=62015 e VERSION=1.

Grupo I [7v] 1. [1,0] Apresente o conteúdo do IDL relativo a este programa. Assuma PROGRAM=62015 e VERSION=1. Número: Nome: Página 1 de 6 LEIC/LETI, 2014/15, Repescagem do 1º Teste de Sistemas Distribuídos 30 de Junho de 2015 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração:

Leia mais

Sistemas distribuídos:comunicação

Sistemas distribuídos:comunicação M. G. Santos [email protected] Faculdade Câmara Cascudo - Estácio de Sá 16 de abril de 2010 Formas de comunicação Produtor-consumidor: comunicação uni-direccional, com o produtor entregando ao consumidor.

Leia mais

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]

Leia mais

Sockets. Introdução. Introdução. Programando para redes em Java. mecanismo de alto nível para acessar recursos na Internet.

Sockets. Introdução. Introdução. Programando para redes em Java. mecanismo de alto nível para acessar recursos na Internet. Sockets Programando para redes em Java Introdução n O URLs e URLConnections fornecem um mecanismo de alto nível para acessar recursos na Internet. n Em aplicações de servidor de cliente, o servidor fornece

Leia mais