A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Java Avançado Luiz Carlos d´Oleron lcadb@cin.ufpe.br SJCP Java Sockets.

Apresentações semelhantes


Apresentação em tema: "Java Avançado Luiz Carlos d´Oleron lcadb@cin.ufpe.br SJCP Java Sockets."— Transcrição da apresentação:

1 Java Avançado Luiz Carlos d´Oleron SJCP Java Sockets

2 Sistemas Distribuídos
“Um sistema distribuído é uma coleção de processadores pouco acoplados, interconectados por uma rede de comunicação” Sistemas Operacionais com Java Silberschatz, Galvin e Gagne Principais Vantagens: Compartilhamento de Recursos Aumento da Velocidade de Computação Confiabilidade Comunicação ...

3 Camadas de Rede Aplicação Transporte Rede Enlace Física

4 Protocolos de Rede Aplicação Transporte Rede Enlace Física
HTTP,RMI, etc TCP e UDP IPv4 e IPv6 Ethernet e ATM

5 TCP Principais Características: Protocolo da camada de transporte
Complexo Orientado à conexão Confiável Multiplexação/Demultiplexação Detecção de Erros Controle de Congestionamento Menos performático do que UDP Utilizado em diversas aplicações: FTP, , HTTP, RMI, etc...

6 Sockets e Portas 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)

7 Servidores e Portas 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

8 Sockets e Portas Exemplos: http://172.17.0.13/ (acesso pela porta 80)
mysql://arcoverde:3306/jornada rmi://localhost:1099/server

9 Sockets em Java É 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

10 Java Sockets e I/O

11 Java Sockets e I/O

12 ServerSocket É 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.

13 ServerSocket

14 Streams e Serialização
Objetos são estruturas complexas ...Possuem vários atributos ...Seus atributos podem ser outros objetos ...Que possuem mais atributos ...Criando uma estrutura em árvore E olhe que nem falamos dos métodos, atributos de classe, etc... Como enviar via rede um objeto complexo? Com serialização

15 Streams e Serialização
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

16 UnmarshalException 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)

17 Sockets e Threads 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

18 Exercício: Um servidor de arquivos
Realizar em dupla Criar um cliente que use um Socket para se conectar a um servidor e enviar automaticamente um arquivo do sistema operacional (Upload) Os primeiros 50 bytes enviados serão usados para enviar o nome do arquivo (só o nome com extensão) Os arquivos podem ser de qualquer tipo Criar um servidor que aguarde conexões. Quando algum socket conectar a ele, automaticamente o servidor irá coletar os bytes enviados e irá criar um arquivo em uma pasta do Sistema Operacional. Nos primeiros 50 bytes recebidos, estará o nome do arquivo enviado. O servidor poderá ser conectado por vários clientes ao mesmo tempo

19 Expansão do Exercício (opcional)
Os arquivos enviados pelo cliente ao servidor podem ser enormes, maiores do que 1 Gb O cliente poderá enviar vários arquivos ao mesmo tempo O servidor poderá atender apenas a um número limitado (k <=10) de clientes simultaneamente No final do Upload, o servidor envia uma mensagem de confirmação para o cliente O cliente poderá efetuar além de uploads, downloads de arquivos do servidor


Carregar ppt "Java Avançado Luiz Carlos d´Oleron lcadb@cin.ufpe.br SJCP Java Sockets."

Apresentações semelhantes


Anúncios Google