200 likes | 299 Views
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).
E N D
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) • 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
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
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
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
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
Inicializando InetAddress • public static InetAddress InetAddres.getByName(String host) trows UnknownHostException • public static InetAddress InetAddres.getAllByName(String host) trows UnknownHostException Ex.: Microsoft.java
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
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
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
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
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
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
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
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
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
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