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

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

Programação Distribuída em Java Aula 02. 2 Na aula passada vimos: Introdução –O que podemos fazer na rede Conceito de Rede –Máquinas conectadas Protocolos.

Apresentações semelhantes


Apresentação em tema: "Programação Distribuída em Java Aula 02. 2 Na aula passada vimos: Introdução –O que podemos fazer na rede Conceito de Rede –Máquinas conectadas Protocolos."— Transcrição da apresentação:

1 Programação Distribuída em Java Aula 02

2 2 Na aula passada vimos: Introdução –O que podemos fazer na rede Conceito de Rede –Máquinas conectadas Protocolos –Conceito e exemplos

3 3 Na aula passada vimos: Modelo ISO/OSI –Aplicação –Apresentação –Sessão –Transporte –Rede –Enlace –Física TCP/IP –Uma simplificação do OSI

4 4 Na aula passada vimos: Modelo Cliente/Servidor –Formato de interação entre máquinas

5 5 O que você deve ter fixado: Funcionamento básico de uma rede Modelo de camadas Interação cliente/servidor

6 6 Na aula de hoje veremos: I/O

7 7 A maior parte do que um programa em rede faz é simples entrada e saída Ler a informação enviada por um servidor é muito parecido com a leitura de um arquivo do sistema local

8 8 I/O I/O em Java é basicamente manipulação de streams Depois que um stream é criado podemos até ignorar o seu tipo original graças ao polimorfismo

9 9 java.io.OutputStream Classe abstrata que fornece os métodos fundamentais para escrita de dados em um meio particular Todas as subclasses de OutputStream têm o mesmo comportamento –Se você sabe usar a superclasse deverá entender o funcionamento das subclasses

10 CharGenerator.java10 java.io.OutputStream Métodos básicos: –public abstract void write (int b) trows IOException –public abstract void write (byte [] data) trows IOException –public abstract void write (byte [] data, int offset, int length ) trows IOException –public void flush() trows IOException –public void close()

11 11 java.io.OutputStream Quando utilizar o método flush() sobre OutputStreams? Sempre! Streams podem ser armazenados em buffer flush força o envio de dados que do contrário seriam perdidos

12 12 java.io.InputStream Classe abstrata que fornece os métodos fundamentais para leitura de dados em um meio particular

13 13 java.io.InputStream Métodos básicos: –public abstract read() –public int read (byte[] input) –public int read (byte[] input, int offset, int length) –public long skip() –public int available() –public void close() –Todos lançam IOException

14 SaveLoad.java14 java.io.InputStream read () bloqueia a execução do programa até que um byte esteja disponível Entrada e saída tendem a ser processos lentos É recomendável que ocorram em threads dedicadas

15 15 java.io.InputStream Para garantir que todos os bytes sejam lidos você deve colocar read() em loop byte[] input = new byte[1024]; int bytesRead = in.read(input); int bytesRead = 0; int bytesToRead = 1024; byte[] input = new byte[bytesToRead]; while( bytesRead < bytesToRead ) { bytesRead += in.read(input, bytesRead, bytesToRead – bytesRead); }

16 16

17 17 Filter Streams Input e OutputStream permitem apenas a inscrição e leitura de bytes... e só Devido à existência de formatos de dados muito comuns, existem classes que dão tratamento especializado para os mesmos

18 18 Filter Streams Filtros manipulam streams fazendo compressão, criptografia, conversão para caracteres, buffer e etc... Filtros podem modificar os dados enquanto são lidos ou escritos –e.g. filtro de compressão ou criptografia

19 19 Filter Streams Vários filtros podem ser encadeados Na maioria das vezes devemos usar o último filtro da cadeia para ler ou escrever dados

20 20 Filter Streams FileInputStream fis = new FileInputStream(data.txt); BufferedInputStream bis = new BuferredInputStream(fis); DataInputStream dis = new DataInputStream(bis); Mas quem fará a leitura? InputStream in = new FileInputStream(data.txt); in = new BuferredInputStream(in); in = new DataInputStream(in); in.read(); Essa é uma melhor opção

21 21

22 ListIt.java22 Readers and Writers Assim como Input e OutputStream usam bytes, readers e writers usam caracteres Unicode veja: http://pt.wikipedia.org/wiki/Unicodehttp://pt.wikipedia.org/wiki/Unicode São chamadas “classes espelho”, pois têm basicamente os mesmos métodos que InputStream e OutputStream

23 23 java.io.OutputStreamWriter Recebe caracteres Unicode e os converte para bytes É análoga a OutputStream Como exercício compare os métodos dessa classe com os de OutputStream

24 24 java.io.InputStreamReader Análoga a InputStream Seus métodos podem ser entendidos comparando-os aos de InputStream

25 25 InputStreamReader GZIPInputStream CipherInputStream BufferedInputStream TelnetInputStream Network Application Suponha que você receba dados compactados e criptografados. Qual seriam os passos para tratar esses dados desde que chegam da rede até que possam ser lidos?

26 26

27 Save and Load.java27 In short: Obtenha um stream Trate-o com um filtro apropriado Conclua a sua manipulação com um reader ou writer

28 28 O que você precisa saber... Tratamento básico de entrada e saída em Java Encadeamento de filtros

29 29 Na próxima aula veremos: Sockets ServerSockets


Carregar ppt "Programação Distribuída em Java Aula 02. 2 Na aula passada vimos: Introdução –O que podemos fazer na rede Conceito de Rede –Máquinas conectadas Protocolos."

Apresentações semelhantes


Anúncios Google