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

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

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

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

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

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

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

Sistemas Distribuídos

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

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

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

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

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

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

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

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

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

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

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

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 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

INF1013 MODELAGEM DE SOFTWARE

INF1013 MODELAGEM DE SOFTWARE INF1013 MODELAGEM DE SOFTWARE Departamento de Informática Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 18 Sockets OLadoServidor O Lado Cliente Múltiplos Clientes 1 Programa Capítulo 18 Sockets

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

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

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 3 Invocação de Objetos

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

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

Capítulo V Sistemas de Objectos Distribuídos

Capítulo V Sistemas de Objectos Distribuídos From: Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, Addison-Wesley 2001 From: Wolfgang Emmerich Engineering Distributed Objects John Wiley & Sons, Ltd 2000 1 O modelo

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

Invocação de Métodos em Objectos Remotos

Invocação de Métodos em Objectos Remotos Invocação de Métodos em Objectos Remotos Invocações de métodos remotas e locais A remote invocation B local C invocation local E invocation local invocation D remote invocation F Page 1 1 Invocação de

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

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

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

Licenciatura em Engenharia Informática PROVA DE TESTE PRÁTICO Sistemas Distribuídos I 2º Semestre, 2005/2006

Licenciatura em Engenharia Informática PROVA DE TESTE PRÁTICO Sistemas Distribuídos I 2º Semestre, 2005/2006 Departamento de Informática Faculdade de Ciências e Tecnologia UNIVERSIDADE NOVA DE LISBOA Licenciatura em Engenharia Informática PROVA DE TESTE PRÁTICO Sistemas Distribuídos I 2º Semestre, 2005/2006 NOTAS:

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

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

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Comunicação Remota Gustavo Reis gustavo.reis@ifsudestemg.edu.br 1 Comunicação entre processos está no coração de todo sistema distribuído. Não tem sentido estudar sistemas distribuídos

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

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

Sistemas Distribuídos RPC Remote Procedure Call

Sistemas Distribuídos RPC Remote Procedure Call Sistemas Distribuídos RPC Remote Procedure Call Universidade Federal do ABC Turma: Ciência da Computação Prof. Dr. Francisco Isidro Massetto Cliente/Servidor Quais os problemas? Baseado em E/S Erro propagado

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

Camada de Transporte. Bruno Silvério Costa

Camada de Transporte. Bruno Silvério Costa Camada de Transporte Bruno Silvério Costa Serviços Oferecidos à camada superior Camadas de rede, transporte e aplicação. Primitivas do Serviço de Transporte As primitivas para um serviço de transporte

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 Aula 17-18: Middleware: Implementação de RMI (cont.), RPC, Modelo de Eventos, Exemplo com Java RMI Chamadas dinâmicas

Leia mais

CAPÍTULO 7 JAVA 7.1 CARACTERÍSTICAS DA LINGUAGEM

CAPÍTULO 7 JAVA 7.1 CARACTERÍSTICAS DA LINGUAGEM CAPÍTULO 7 JAVA Java é uma linguagem orientada a objeto cujo projeto foi desenvolvido pela Sun Microsystems no início de 1991. Ela foi originalmente concebida para ser utilizada na programação de dispositivos

Leia mais

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 queiroz@unicamp.br CORBA Common Object Request Broker Architecture Unicamp Centro de Computação Rubens Queiroz de Almeida queiroz@unicamp.br Objetivos Apresentação Tecnologia CORBA Conceitos Básicos e Terminologia Considerações

Leia mais

Programa de Computador que funciona em Rede

Programa de Computador que funciona em Rede Programa de Computador que funciona em Rede professor Robinson Vida Noronha 1 Paradigma Um programa rodando em rede é como uma loja. 2 Uma loja é composta por Vendedores Vendedores 3 Um loja deve servir

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

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

Arquiteturas de Aplicações Distribuídas

Arquiteturas de Aplicações Distribuídas Arquiteturas de Aplicações Distribuídas Fernando Albuquerque 061-2733589 fernando@cic.unb.br www.cic.unb.br/docentes/fernando Tópicos Introdução. HTTP / CGI. API sockets. JDBC. Remote Method Invocation.

Leia mais

Programação Paralela e Distribuída em Java

Programação Paralela e Distribuída em Java Programação Paralela e Distribuída em Java Lucilene Baêta Ferrão, Reinaldo Silva Fortes Universidade Presidente Antonio Carlos (UNIPAC) Barbacena MG Brasil lubeferrao@gmail.com, reifortes@yahoo.com.br

Leia mais

RMI/JNDI - Fundamentos

RMI/JNDI - Fundamentos c o l u n a Professor J RMI/JNDI - Fundamentos Um exemplo prático do que são e de como funcionam RMI e JNDI Roberto Vezzoni (roberto.vezzoni@gmail.com): SCJP, faz Ciência da Computação na Faesa e atua

Leia mais

Programação em Rede Baseada em Java. Luiz Affonso Guedes Tópicos em Redes de Computadores Programação Distribuída www.dca.ufrn.

Programação em Rede Baseada em Java. Luiz Affonso Guedes Tópicos em Redes de Computadores Programação Distribuída www.dca.ufrn. Programação em Rede Baseada em Java Luiz Affonso Guedes Tópicos em Redes de Computadores Programação Distribuída www.dca.ufrn.br/~affonso/cursos Definiçõs Básicas Uma rede é um conjunto de computadores

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

Trabalho de Sistemas Distribuídos

Trabalho de Sistemas Distribuídos Cássio de Olivera Ferraz Trabalho de Sistemas Distribuídos Petrópolis 2015, v-1.0 Cássio de Olivera Ferraz Trabalho de Sistemas Distribuídos Trabalho sobre sistemas distribuídos e suas tecnologias. Universidade

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

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

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

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

INF01018 Aula Prática 2 RMI Remote Method Invocation

INF01018 Aula Prática 2 RMI Remote Method Invocation 1 / 18 INF01018 Aula Prática 2 RMI Remote Method Invocation Lucas Mello Schnorr, Alexandre Silva Caríssimi {lmschnorr,asc}@inf.ufrgs.br http://www.inf.ufrgs.br/ lmschnorr/ad/ INF01018 Sistemas Operacionais

Leia mais

Redes de Computadores - 2010/1

Redes de Computadores - 2010/1 Redes de Computadores - 2010/1 Miniprojeto Universidade Federal do Espírito Santo - UFES Professor: Magnos Martinello 20 de maio de 2010 1 1 Proposta A proposta do trabalho é reforçar o compreendimento

Leia mais

A utilização do JSWDP para construção de Web Services

A utilização do JSWDP para construção de Web Services A utilização do JSWDP para construção de Web Services Fabiana Ferreira Cardoso 1, Francisco A. S. Júnior 1, Madianita Bogo 1 1 Centro de Tecnologia da Informação Centro Universitário Luterano de Palmas

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

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

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

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

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

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

Sockets em Java. Leonardo R. Nunes - leonardo@sumersoft.com. 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 - leonardo@sumersoft.com 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

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

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

UNIVERSIDADE ESTADUAL DO OESTE DO PARANÁ CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS COLEGIADO DE INFORMÁTICA

UNIVERSIDADE ESTADUAL DO OESTE DO PARANÁ CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS COLEGIADO DE INFORMÁTICA UNIVERSIDADE ESTADUAL DO OESTE DO PARANÁ CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS COLEGIADO DE INFORMÁTICA Disciplina: Redes de Computadores Ano: 2007 Professor: Luiz Antonio Trabalho 1º Bimestre Cliente/Servidor

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

Comunicação entre processos

Comunicação entre processos Comunicação entre processos Processo: um programa em execução num sistema terminal (host) Processos em sistemas distintos comunicam trocando mensagens Processo Cliente: processo que inicia a comunicação

Leia mais

Programação Orientada a Objetos em Java. Threads Threads Threads. Threads

Programação Orientada a Objetos em Java. Threads Threads Threads. Threads Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Programação Orientada a Objetos em Java Threads Threads Threads Threads Professor: César Melo Slides baseados

Leia mais

Cliente-servidor com Sockets TCP

Cliente-servidor com Sockets TCP Cliente-servidor com Sockets TCP Paulo Sérgio Almeida Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho 2007/2008 c 2000 2007 Paulo Sérgio Almeida Cliente-servidor com Sockets

Leia mais

Acesso direto. canal. System call. System call S.O.

Acesso direto. canal. System call. System call S.O. Inter-process Comunicação Communication(IPC) Memória entre compartilhada processos Java Sockets Sinais Pipes Comunicação Processos RMI Hardware Um processo oferece executam entre não acessa proteção 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

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

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 (continuação) WSDL - Web Service Definition Language WSDL permite descrever o serviço que será oferecido

Leia mais

CORBA Common Object Request Broker Architecture. Carolina de Oliveira Cunha Lenita Martins Ambrosio Victor da Fonseca Santos

CORBA Common Object Request Broker Architecture. Carolina de Oliveira Cunha Lenita Martins Ambrosio Victor da Fonseca Santos CORBA Common Object Request Broker Architecture Carolina de Oliveira Cunha Lenita Martins Ambrosio Victor da Fonseca Santos Introdução OMG (Object Management Group): uma organização formada por empresas

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

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

Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS

Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS Objetos distribuídos e invocação remota Introdução Comunicação entre objetos distribuídos Chamada de procedimento remoto Eventos e notificações Objetos

Leia mais

JLANSCHOOL - APLICAÇÃO DA TECNOLOGIA JAVA RMI NO DESENVOLVIMENTO DE UM SOFTWARE DE GERÊNCIA DE LABORATÓRIO DE COMPUTADORES

JLANSCHOOL - APLICAÇÃO DA TECNOLOGIA JAVA RMI NO DESENVOLVIMENTO DE UM SOFTWARE DE GERÊNCIA DE LABORATÓRIO DE COMPUTADORES JLANSCHOOL - APLICAÇÃO DA TECNOLOGIA JAVA RMI NO DESENVOLVIMENTO DE UM SOFTWARE DE GERÊNCIA DE LABORATÓRIO DE COMPUTADORES Everton Sant Ana de Araujo 1 Resumo. O presente trabalho apresenta o desenvolvimento

Leia mais

Programação com Objetos Distribuídos e Componentes

Programação com Objetos Distribuídos e Componentes Programação com Objetos Distribuídos e Componentes Cláudio F. R. Geyer, Luciano Cavalheiro da Silva, Patrícia Kayser Vargas, Juliano Malacarne Resumo Universidade Federal do Rio Grande do Sul Instituto

Leia mais

Multithreading. Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC - Programação em Comunicações

Multithreading. Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC - Programação em Comunicações Programação Orientada por Objectos com Java www.fe.up.pt/~aaguiar ademar.aguiar@fe.up.pt 1 Multithreading 154 Objectivos Ser capaz de: Explicar os conceitos básicos de multithreading Criar threads múltiplos

Leia mais

Sockets com Java Parte I

Sockets com Java Parte I Sockets com Java Parte I Neste artigo veremos como desenvolver aplicações em Java que podem comunicar-se via rede local ou via internet, usando sockets. Leia mais em: Sockets com Java Parte I http://www.devmedia.com.br/sockets-com-java-parte-i/

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

Sistemas Distribuídos

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

Leia mais

Sistemas Operacionais:

Sistemas Operacionais: Sistemas Operacionais: Sistemas Distribuídos e Programação em Redes de Computadores Dierone Cesar Foltran Junior dcfoltran at yahoo.com Sistemas Distribuídos Sistemas Computacionais Distribuídos Lamport:

Leia mais

Desenvolvimento de Aplicações Java/CORBA

Desenvolvimento de Aplicações Java/CORBA Tutorial Desenvolvimento de Aplicações Java/CORBA Emerson Ribeiro de Mello, Fábio Favarim e Joni da Silva Fraga {emerson, fabio, fraga@das.ufsc.br Este tutorial ensina como criar uma aplicação distribuída

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

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

Componentes para Computação Distribuída

Componentes para Computação Distribuída Componentes para Computação Distribuída Conceitos Foi a partir do fenômeno da Internet (WWW), no início dos anos noventa, que a computação distribuída passou a ter relevância definitiva, a ponto de a Internet

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 daniel.silva1@ext.mpsa.com

Leia mais

Sistemas distribuídos:comunicação

Sistemas distribuídos:comunicação M. G. Santos marcela@estacio.edu.br 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

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