Programação Distribuída em Java - IME-USP

Propaganda
Programação Distribuída em
Java
Aula 03
Na aula passada vimos:
• I/O
• Sockets
2
Na aula de hoje veremos:
• Domain Name Server
• O pacote java.net
• A classe InetAddress
• A classe Url
• A classe UrlConnection
3
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
4
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
5
Domain Name Server (DNS)
world
Fapesp
(*.br)
other
another
dns
uol
aol
dns
bol
sol
mol
rol
6
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
7
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)
Ex.: USP.java
8
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
9
Inicializando InetAddress
• public static InetAddress
InetAddres.getByName(String host)
trows UnknownHostException
• public static InetAddress
InetAddres.getAllByName(String host)
trows UnknownHostException
Ex.: Microsoft.java
10
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
Ex.: UspByAddress.java
11
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
Ex.: MyAddress.java
12
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
13
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
Ex.: ProtocolTester.java
14
Construtores de URL
• A partir de uma String
URL u = new URL(“http://www.ime.usp.br/index.html”);
• A partir dos componentes
URL 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
15
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.
Ex.: SourceViewer.java
16
Recuperando dados de um URL
• public URLConnection openConnection()
Abre um Socket para um URL específico
Retorna um URLConnection que dá acesso a tudo o que
for enviado pelo servidor, e.g. header’s
Permite 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
17
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.
Ex.: ContentGetter.java
18
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
19
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
20
Download