programação distribuída em java
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 PresentationTRANSCRIPT
Programação Distribuída em Java
Aula 03
2
Na aula passada vimos:
• I/O
• Sockets
3
Na aula de hoje veremos:
• Domain Name Server
• O pacote java.net
• A classe InetAddress
• A classe Url
• A classe UrlConnection
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
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
6
Domain Name Server (DNS)
world
Fapesp(*.br)
other another
dns
uol aol bol
dns
sol mol rol
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
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)
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
Ex.: Microsoft.java 10
Inicializando InetAddress
• public static InetAddress InetAddres.getByName(String host)
trows UnknownHostException
• public static InetAddress InetAddres.getAllByName(String host)
trows UnknownHostException
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
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
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
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
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
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.
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
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.
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
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