Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Sistemas Distribuídos - Comunicação Distribuída - Socket

5,742 views

Published on

Published in: Technology, Education
  • Be the first to comment

Sistemas Distribuídos - Comunicação Distribuída - Socket

  1. 1. Comunicação Distribuída - Socket Prof. Adriano Teixeira de Souza
  2. 2.  Estratégias diferentes que permitem a comunicação entre aplicações distribuídas. Tipos distintos de comunicação em um sistema distribuído: ◦ Sockets ◦ RMI - Remote Method Invocation ◦ CORBA – Commom Object Request Broker Architecture ◦ EJB – Enterprise Java Bean ◦ Web Services Prof. Adriano Teixeira de Souza
  3. 3. Aplicação AplicaçãoTransporte Transporte Rede Rede Enlace Enlace Física Física Prof. Adriano Teixeira de Souza
  4. 4. Aplicação HTTP,RMI, etc AplicaçãoTransporte TCP e UDP Transporte Rede IPv4 e IPv6 Rede Enlace Ethernet e ATM Enlace Física Física Prof. Adriano Teixeira de Souza
  5. 5.  Principais Características: ◦ Protocolo da camada de transporte ◦ Complexo ◦ Orientado à conexão ◦ Confiável ◦ Detecção de Erros ◦ Controle de Congestionamento ◦ Menos performático do que UDP ◦ Utilizado em diversas aplicações: FTP, email, HTTP, RMI, etc... Prof. Adriano Teixeira de Souza
  6. 6.  TCP usa duas abstrações chamadas Sockets e Portas Portas e Sockets não existem fisicamente Em Java, um socket é um objeto que sabe como enviar e receber dados de (e para) um outro computador através de uma rede Java Sockets usam TCP, apesar que não é necessário saber isso para usar Sockets (encapsulamento) Prof. Adriano Teixeira de Souza
  7. 7.  Servidores (Servers) são computadores que disponibilizam serviços através de Portas Cada serviço é disponibilizado através de uma porta Quando queremos usar um serviço, usamos TCP, informando o endereço IP da máquina e a Porta do serviço Por exemplo, o serviço de um HTTP server normalmente atende pela porta 80 (default) Entretanto, muitos Application Server (Tomcat por exemplo) são normalmente configurados para atender pela porta 8080 Prof. Adriano Teixeira de Souza
  8. 8.  Exemplos: ◦ http://172.17.0.13/ (acesso pela porta 80) ◦ http://172.17.0.14:8080/ (acesso pela porta 8080) ◦ mysql://arcoverde:3306/jornada ◦ rmi://localhost:1099/server Prof. Adriano Teixeira de Souza
  9. 9.  É representado pela classe java.net.Socket Usa TCP, logo herda todas as características dele (principalmente a confiabilidade) Exemplo de Construtor:public Socket(String ipserver, int porta) throws IOException; Após o construtor executar, o socket já estará apto para se comunicar Se o socket não conseguir se comunicar, será lançada uma IOException Permite escrita e leitura através de Input e OutputStream´s Prof. Adriano Teixeira de Souza
  10. 10. Prof. Adriano Teixeira de Souza
  11. 11. Prof. Adriano Teixeira de Souza
  12. 12.  É representado pela classe java.net.ServerSocket A função principal de um ServerSocket é aguardar pela conexão de um Socket Um dos construtores mais utilizados é:public ServerSocket(int porta) throws IOException; Se o ServerSocket não conseguir se instalar na porta, será lançada uma IOException Diferente do Socket, após o construtor executar, o ServerSocket deverá chamar acept() para aguardar uma conexão acept() retorna um socket. Após acept() retornar, o ServerSocket poderá se comunicar com este socket. Prof. Adriano Teixeira de Souza
  13. 13. Prof. Adriano Teixeira de Souza
  14. 14.  Objetos são estruturas complexas ◦ Possuem vários atributos ◦ Seus atributos podem ser outros objetos ◦ Que possuem mais atributos ◦ Criando uma estrutura em árvore Como enviar via rede um objeto complexo? ◦ Com serialização Prof. Adriano Teixeira de Souza
  15. 15.  Serialização é o processo de transformar uma estrutura de dados complexa, como um objeto, em uma série de bytes A série gerada é “enviada pelo fio” da rede Do outro lado, o objeto é rematerializado Graças ao Java Team, a JVM faz isso para nós Basta que indiquemos que a classe do objeto implementa a interface java.io.Serializable Obs.: os atributos do objeto devem ser Serializable também Isso é o mesmo processo usado para se gravar um objeto em um arquivo Prof. Adriano Teixeira de Souza
  16. 16.  Se você tentar enviar um objeto via rede que não pode ser serializado, será lançada uma UnmarshalException Marshaling e UnMarshaling são outros nomes dados para os processos de Desmaterizalizar e Materializar o objeto Quando ocorrer, observe se o objeto que você está enviando é Serializable (lembre-se dos atributos) Prof. Adriano Teixeira de Souza
  17. 17. • O normal é que tenhamos vários clientes para poucos servidores• Assim, um servidor deve poder atender a vários clientes ao mesmo tempo• Isto é feito escalonando Threads no lado do servidor, de forma que cada Thread cuide de um cliente Prof. Adriano Teixeira de Souza
  18. 18.  As aplicações que utilizam a rede são complexas A complexidade vêm normalmente por uma gama de serviços de infra-estrutura que são necessários para a execução do sistema propriamente dito ◦ Por exemplo: localização, chamadas de métodos, tolerância a falhas, etc... Por que são muito simples, com sockets podemos apenas enviar e receber dados Implementar todas as funcionalidades infra-estruturais utilizando diretamente sockets pode ser um trabalho custoso, repetitivo e, na maioria das vezes, complexo Para diminuir as responsabilidades das aplicações (e dos desenvolvedores delas), são utilizados plataformas de software que realizam funcionalidades de infra-estrutura que são comuns aos sistemas Prof. Adriano Teixeira de Souza

×