Programação Distribuída em Java

20
Programação Distribuída em Java Aula 03

description

Programação Distribuída em Java. Aula 03. Na aula passada vimos:. I/O Sockets. Na aula de hoje veremos:. Domain Name Server O pacote java.net A classe InetAddress A classe Url A classe UrlConnection. Domain Name Server (DNS). - PowerPoint PPT Presentation

Transcript of Programação Distribuída em Java

Page 1: Programação Distribuída em Java

Programação Distribuída em Java

Aula 03

Page 2: Programação Distribuída em Java

2

Na aula passada vimos:

• I/O

• Sockets

Page 3: Programação Distribuída em Java

3

Na aula de hoje veremos:

• Domain Name Server

• O pacote java.net

• A classe InetAddress

• A classe Url

• A classe UrlConnection

Page 4: Programação Distribuída em Java

4

Domain Name Server (DNS)

• O ser humano consegue memorizar seqüências de até sete números

• DNS associa endereços IP a hostname’s para simplificar a memorização do ser humano

• Note que um endereço é diferente de um nome de host– As pessoas chamam hostname’s de endereço... Nesse curso

será feita uma clara (e necessária) distinção

Page 5: Programação Distribuída em Java

5

Domain Name Server (DNS)

• Um nome pode mapear vários endereços

• Todo computador conectado a Internet deve ter acesso a um DNS– Veja: http://neosite.ilogic.com.br/artigos/o_que_e_ip_e_dns.htm

Page 6: Programação Distribuída em Java

6

Domain Name Server (DNS)

world

Fapesp(*.br)

other another

dns

uol aol bol

dns

sol mol rol

Page 7: Programação Distribuída em Java

7

Package java.net

• Fornece as classes para a implementação de aplicações em rede

• Possui 28 classes, 6 interfaces e 11 exceções

• Serão estudadas apenas as classes principais

Page 8: Programação Distribuída em Java

Ex.: USP.java 8

java.net.InetAddress

• Representa um endereço IP

• Pode ter 32 ou 128 bits– Veja as subclasses: Inet4Address e Inet6Address

• Endereços da forma: ddd.ddd.ddd.ddd– Usando o padrão atual: IPv4– Quadra pontuada (dotted quad)

Page 9: Programação Distribuída em Java

9

java.net.InetAddress

• É usada pela maioria das classes Java que fazem conexão de rede

• Possui apenas dois campos privados:– String hostName– int address

• Não há construtores públicos

Page 10: Programação Distribuída em Java

Ex.: Microsoft.java 10

Inicializando InetAddress

• public static InetAddress InetAddres.getByName(String host)

trows UnknownHostException

• public static InetAddress InetAddres.getAllByName(String host)

trows UnknownHostException

Page 11: Programação Distribuída em Java

Ex.: UspByAddress.java 11

Inicializando InetAddress

• public static InetAddress InetAddres.getLocalHost (String host)

trows UnknownHostException

• String host pode ser: “208.125.15.47” e não apenas um hostname

• Note que os três métodos estáticos realmente fazem uma conexão de rede com o DNS para obter informações

Page 12: Programação Distribuída em Java

Ex.: MyAddress.java 12

Acessando campos de InetAddress

• Normalmente não queremos imprimir o “próprio” objeto InetAddress, usamos:– public String getHostName()– public String getHostAddress()– public byte[] getAddress()

• O último getter pode ser usado para determinar o tipo (classe) de endereço

Page 13: Programação Distribuída em Java

13

java.net.URL

• Classe que encapsula as características de um Uniform Resource Locator (url)

• Um url se caracteriza pelos campos:– Protocolo– Nome do host– Porta– Caminho– Consulta– Referência (ou âncora)

• Um URL é imutável

Page 14: Programação Distribuída em Java

Ex.: ProtocolTester.java 14

Inicializando java.net.URL

• Diferente de InetAddress, é possível se construir um objeto URL

• O programador é responsável por garantir que o URL criado é válido

• Os protocolos utilizados pelo URL dependem da implementação

Page 15: Programação Distribuída em Java

15

Construtores de URL

• A partir de uma StringURL u = new URL(“http://www.ime.usp.br/index.html”);

• A partir dos componentesURL u = new URL(“http”, ”www.ime.usp.br”, “80”, “/index.html”);

Note a barra que antecede o nome do arquivo... É um erro comum esquecê-la

Page 16: Programação Distribuída em Java

Ex.: SourceViewer.java 16

Recuperando dados de um URL

• public final InputStream openStream()Conecta-se ao recurso referenciado pelo URL

Realiza algum acordo entre cliente e servidor

Retorna um InputStream a partir do qual os dados podem ser lidos.

Page 17: Programação Distribuída em Java

17

Recuperando dados de um URL

• public URLConnection openConnection()Abre um Socket para um URL específicoRetorna um URLConnection que dá acesso a tudo o que for enviado pelo servidor, e.g. header’sPermite também o envio de dados ao URL

try { URL u = new URL(http://www.fapesp.br); try { URLConnection uc = u.openConnection(); Inputstream in = uc.getInputStream(); // note que poderíamos aqui acessar o OutputStream de uc

Page 18: Programação Distribuída em Java

Ex.: ContentGetter.java 18

Recuperando dados de um URL

• public final Object getContent()Conecta-se ao recurso referenciado pelo URL

Tenta converter ser conteúdo para algum objeto Java

.

• Existe uma versão sobrecarregada desse método na qual é possível verificar se a classe do objeto recebido é a esperada dentre uma

lista fornecida pelo usuário.

Page 19: Programação Distribuída em Java

19

java.net.URLConnection

• Representa uma conexão ativa a um recurso especificado por um URL

• Fornece maior controle sobre a interação com o servidor

• Permite a inspeção dos cabeçalhos MIME enviados por servidores HTTP

• Um Socket pode fazer a maioria das coisas que um URLConnection faz

Page 20: Programação Distribuída em Java

20

O que você precisa saber:

• Distinguir endereço de hostname; ter noções de DNS

• Quando usar InetAddress e quando usar URL

• Recuperar dados de um URL; enviar solicitações a cgi e servlet