Conceitos Básicos. Conceitos Básicos. Networking. Programando para redes em Java. empregando os protocolos:



Documentos relacionados
Java 2 Standard Edition Fundamentos de

Mecanismos de Comunicação. Sockets em java (

Programação Paralela e Distribuída. Prof. Cidcley T. de Souza

Programação em Rede Baseada em Java. Luiz Affonso Guedes Tópicos em Redes de Computadores Programação Distribuída

Sockets. Introdução. Introdução. Programando para redes em Java. mecanismo de alto nível para acessar recursos na Internet.

Camada de Transporte. Bruno Silvério Costa

FTP FILE F TRANSFER PROTOCOL. Tópicos

Sockets em Java. Leonardo R. Nunes - leonardo@sumersoft.com. 1. Introdução. 2. Sockets TCP/IP

Um pouco do Java. Prof. Eduardo

INF1013 MODELAGEM DE SOFTWARE

Programação com sockets (em Java)

Programação de sockets com TCP

Prof. Marcelo Cunha Parte 5

Invocação de Métodos Remotos

Aula 30 - Sockets em Java

Olho por olho, e o mundo acabará cego. Mohandas Gandhi

Capítulo 7 CAMADA DE TRANSPORTE

Capítulo II Modelos de Programação Distribuída

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

Sistemas Distribuídos Java Sockets

REDES DE COMPUTADORES

socket Objetivo: aprender a construir aplicações cliente/servidor que se comunicam usando sockets

Redes de Computadores. Protocolos de comunicação: TCP, UDP

UNIVERSIDADE ESTADUAL DO OESTE DO PARANÁ CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS COLEGIADO DE INFORMÁTICA

Invocação de Métodos Remotos RMI (Remote Method Invocation)

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente

TECNOLOGIA WEB. Principais Protocolos na Internet Aula 2. Profa. Rosemary Melo

Redes. Pablo Rodriguez de Almeida Gross

Programação de Sockets

1 Redes de Computadores - TCP/IP Luiz Arthur

USO GERAL DOS PROTOCOLOS SMTP, FTP, TCP, UDP E IP

Comunicação entre processos

Redes de Computadores. Prof. André Y. Kusumoto

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

CAMADA DE TRANSPORTE

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos

Aula 3. Objetivos. A internet.

Bacharelado em Ciência e Tecnologia BC Processamento da Informação Teoria Arquivos Prof. Edson Pinheiro Pimentel edson.pimentel@ufabc.edu.

UNIVERSIDADE. Sistemas Distribuídos

Um pouco sobre Pacotes e sobre os protocolos de Transporte

Sockets. Bruno Guimarães Lucas Rossini

Passagem de Mensagens

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

REDES DE COMPUTADORES

Rede de Computadores (REC)

Guia de Conectividade Worldspan Go Res! A V A N Ç A D O

Redes de Computadores II

REDES DE COMPUTADORES

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

MÓDULO 8 Modelo de Referência TCP/IP

Redes - Internet. Sumário Aula 3,4 e 5 9º C } Estrutura baseada em camadas. } Endereços IP. } DNS -Domain Name System

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Protocolos de Redes Revisão para AV I

TRIBUNAL DE CONTAS DO DISTRITO FEDERAL

Parte I. Demoiselle Mail

INFORMÁTICA FUNDAMENTOS DE INTERNET. Prof. Marcondes Ribeiro Lima

MODELO CLIENTE SERVIDOR

Sistemas Distribuídos

Wireshark. Captura de Protocolos da camada de aplicação. Maicon de Vargas Pereira

SISTEMAS DISTRIBUIDOS

Programa de Computador que funciona em Rede

Camada de Aplicação. DNS Domain Name System. Redes de Computadores Prof. Leandro C. Pykosz

Tecnologias Web. Lista de Exercícios AV02. Luiz Leão

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.

Sistemas Distribuídos

Java : Comunicação Cliente-Servidor.

Sistemas Distribuídos

Segurança de redes com Linux. Everson Scherrer Borges Willen Borges de Deus

Comunicando através da rede

Aula 1 Cleverton Hentz

Cliente-servidor com Sockets TCP

TCP/IP TCP UDP IP HTTP HTTPS FTP TFTP TELNET POP3 IMAP SMTP SNMP DHCP

Ler e escrever bytes, caracteres e Strings de/para a entrada e saída padrão. Ler e escrever bytes, caracteres e Strings de/para arquivos

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

Protocolos de Internet (família TCP/IP e WWW) Primeiro Técnico. Prof. Cesar

Informática I. Aula Aula 22-03/07/06 1

Redes de Computadores II. Professor Airton Ribeiro de Sousa

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Disciplina Fundamentos de Redes. Introdução ao Endereço IP. Professor Airton Ribeiro de Sousa Outubro de 2014

Java. Marcio de Carvalho Victorino

Revisão. Karine Peralta

10/07/2013. Camadas. Principais Aplicações da Internet. Camada de Aplicação. World Wide Web. World Wide Web NOÇÕES DE REDE: CAMADA DE APLICAÇÃO

Redes de Computadores. Trabalho de Laboratório Nº7

Internet e protocolos web. A Internet é uma rede descentralizada de recursos computacionais. Topologia tem de fornecer caminhos alternativos

Redes de Computadores

Arquitetura de Rede de Computadores

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

SISTEMAS DISTRIBUÍDOS

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

Redes de Computadores Camada de Aplicação. Prof. MSc. Hugo Souza

CCNA 2 Conceitos Básicos de Roteadores e Roteamento

Rede d s d e d Com o pu p t u ado d r o es Conceitos Básicos M d o e d los o de d Re R de d s:

INTERNET CONCEITOS. Internet é a "grande rede mundial de computadores"

3. Explique o motivo pelo qual os protocolos UDP e TCP acrescentam a informação das portas (TSAP) de origem e de destino em seu cabeçalho.

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução

Redes de Computadores

TECNOLOGIA WEB INTERNET PROTOCOLOS

Aplicações, durante a execução, podem incorrer em muitas espécies de erros de vários graus de severidade Quando métodos são invocados sobre um objeto:

SMTP, POP, IMAP, DHCP e SNMP. Professor Leonardo Larback

Transcrição:

Networking Programando para redes em Java 1 Conceitos Básicos n Computadores na internet se comunicam empregando os protocolos: Transmission Control Protocol (TCP); ou User Datagram Protocol (UDP). Conceitos Básicos n Ao escrever um programa em Java que se comunica através da rede, estamos trabalhando na Application Layer. n Normalmente não será necessário se preocupar com as camadas TCP e UDP (camadas de transporte) n As camadas do pacote java.net provêem estes serviços e são independentes do sistema. 1

Conceitos Básicos - TCP n Definição: TCP (Transmission Control Protocol) é um protocolo baseado em conexão (connectionbased) que provê um fluxo confiável de dados entre dois computador. n Quando dois programas querem se comunicar, estes estabelecem uma conexão entre eles de forma análoga a uma ligação telefônica. n Assim como a companhia telefônica, o TCP garante que os dados enviados cheguem na mesma ordem ao destinatário. Conceitos Básicos - TCP n O TCP cria um canal ponto-à-ponto para os programas. n O Hypertext Transfer Protocol (HTTP), o File Transfer Protocol (FTP), e o Telnet são exemplos de aplicativos que necessitam de um canal confiável de comunicação. n Quando o HTTP é empregado para ler dados de uma URL, os dados devem ser recebidos na ordem que são enviados, caso contrário a página HTML seria corrompida, ou um arquivo de imagem, ou zip seriam inválidos. Conceitos Básicos - UDP n Definição: UDP (User Datagram Protocol) é um protocolo que envia pacotes independentes de dados, denominados datagramas. O UDP não é um protocolo connection-based como o TCP. n O protocolo UDP permite a comunicação entre dois programas através da rede, porém sem estabelecer um conexão entre eles. 2

Conceitos Básicos - UDP n Enviar datagramas é muito semelhante a enviar cartas. A ordem de entrega não é garantida e cada mensagem é independente uma da outra. n Um exemplo de serviço que não requer um canal confiável para comuniação é o comando ping. O seu objetivo é testar a comunicação entre dois computadores. Conceito Básicos - Portas n Um computador tem, normalmente, uma única conexão física com a rede. n Todos os dados chegam a este computador através desta conexão física, porém os dados podem ser destinados a diferentes programas que estejam rodando nesta máquina. n O destino dos dados em um mesmo computador é definido através das portas (ports). Conceito Básicos - Portas n Definição: os protocolos TCP e UDP empregam portas para mapear os dados para um processo particular que esteja rodando no computador. n O computador é identificado pelo seu endereço IP com 32-bit e as portas são identificadas por um número de 16-bit. 3

Conceito Básicos - Portas n Nos protocolos baseados em datagramas, como o UDP, os pacotes de dados contém o número da porta do destino e o UDP faz o roteamento para o aplicativo correto: Interface de Rede n Uma interface de rede é o ponto da ligação entre um computador e uma rede privada ou pública. n É geralmente um cartão de interface de rede (NIC), mas não é necessariamente um hardware, a interface de rede pode ser implementada no software. Por exemplo, a interface de laço de retorno (127.0.0.1 para IPv4 e:: 1 para IPv6) não é um dispositivo físico mas uma parte do software que simula uma interface de rede. n A interface de laço de retorno é comumente usada em ambientes de teste. Interface de Rede n A classe NetworkInterface, do pacote java.net, representa ambos os tipos de interfaces. n Esta classe é útil para sistemas multihomed, ou seja, sistemas com múltiplos NICs. n Por meio da classe NetworkInterface pode ser especificado qual NIC usar para uma determinada atividade de rede. 4

Interface de Rede n Por exemplo, assumindo que haja uma máquina com dois NICs, e você quer enviar dados a um servidor. Você cria um socket: Socket soc = new java.net.socket(); soc.connect(new InetSocketAddress(address, port)); n Para enviar os dados, o sistema determina que interface será usada. Interface de Rede n Para especificar que NIC usar, você pode questionar o sistema quais as interfaces apropriadas e encontrar o endereço da interface que você quer usar. n Quando você cria o socket e o conecta àquele endereço, o sistema usará a interface associada. Por exemplo: NetworkInterface nif = NetworkInterface.getByName("bge0"); MulticastSocket() ms = new MulticastSocket(); ms.joingroup( new InetSocketAddress(hostname, port), nif); InetAddress n Pertence ao pacote java.net. n A classe InetAddress representa endereços de IP. n Ela trabalha com: qualquer hostname (www.unieuro.edu.br); ou endereço IP numérico (200.199.197.148). n Oferece um número de métodos úteis para tratar endereços de IP e hostnames. 5

InetAddress n A classe InetAddress não tem nenhum construtor público. n Para instancia-la você passa o nome de host ou o endereço ao método InetAddress.getByName try { InetAddress unieuro = InetAddress.getByName("www.unieuro.edu.br"); "); InetAddress addunieuro = InetAddress.getByName("200.199.197.148"); catch (UnknownHostException ex) { System.err.println(ex); InetAddress n Alguns hosts têm múltiplos endereços. n Quando for este o caso, o método InetAddress.getAllByName retorna um array de objetos InetAddress: try { InetAddress[] addresses = InetAddress.getAllByName("www.google.com") "); for (int i = 0; i < addresses.length; i++) { System.out.println(addresses[i]); catch (UnknownHostException ex) { System.out.println("Não encontrei www.google.com"); InetAddress n O método InetAddress.getLocalHost retorna um objeto InetAddress que contém o endereço do computador onde o programa está rodando: try { InetAddress me = InetAddress.getLocalHost(); catch (UnknownHostException e) { System.err.println(e); 6

InetAddress n InetAddress.getByName n InetAddress.getAllByName n InetAddress.getLocalHost n InetAddress.getHostAddress n InetAddress.getHostName n InetAddress.getAddress Trabalhando com URLs n O HTTP utiliza URI (uniform resource identifier) para identificar dados na Internet. n URIs que especificam a localização de documentos são chamados URL(uniform resource locator). n URLs comuns referenciam arquivos, diretórios, ou objetos que realizam tarefas complexas, como pesquisas em bancos de dados ou mesmo na Internet. n Aplicativos Java que interagem com a Internet também usam URLs para encontrar os recursos que necessitam ter acesso, para tal podem empregar a classe URL, do pacote java.net, para representar um endereço URL. O que são URLs? n Definição: URL é a abrevatura de Uniform Resource Locator e é a referência (um endereço) para um recurso na Internet. Uma URL tem dois componentes principais: 1. identificador do Protocolo; e 2. o nome do Recurso. 7

Criando um Objeto URL n A maneira mais fácil é através de uma String: URL gamelan = new URL("http://www.gamelan.com/"); n O objeto URL criado desta forma representa um URL absoluto, uma vez que contém toda a informação necessária para alcançar o recurso. n Também podem ser criados objetos URL relativos a um endereço URL. Criando um Objeto URL n Um URL relativo contém somente a informação necessária para alcançar um recurso relativo (ou no contexto de) a outro URL. n URLs relativos são usados em páginas HTML. n Num programa Java por exemplo: URL gamelan = new URL("http://www.gamelan.com/pages/"); URL gamelangames = new URL(gamelan, "Gamelan.game.html"); URL gamelannetwork = new URL(gamelan, "Gamelan.net.html"); Ouros Construtores n A classe URL tem dois outros construtores que são empregados quando não há um objeto String que contenha a especificação completa da URL, mas seus componentes são conhecidos. 8

Outros Construtores n O primeiro construtor cria um objeto URL a partir do protocolo, host name e nome do arquivo, como no exemplo abaixo: new URL("http", "www.gamelan.com", "/pages/gamelan.net.html"); Que equivale: new URL("http://www.gamelan.com/pages/Gamelan.net. html"); Outros Construtores n Os argumentos passados para este construtor são: o protocolo; host name; e O caminho e o nome (pathname) do arquivo. n Observe que no exemplo o pathname continha uma barra invertida no início, o que indica que o caminho é referente à raiz do host. Outros Construtores n O último construtor adiciona o número da porta à lista de parâmetros empregadso no construtor anterior: URL gamelan = new URL("http", "www.gamelan.com", 80, "pages/gamelan.network.html"); n Para obter a string correspondente a URL dos objetos criados empregando estes 2 últimos construtores emprega-se o métdos tostring ou o método equivalent toexternalform. 9

URL com Caracteres Especiais n Alguns endereços URL possuem caracteres especiais como por exemplo: http://foo.com/hello world/ n Para poder empregar estes caracteres eles precisam ser codificados: URL url = new URL("http://foo.com/hello%20world"); URL com Caracteres Especiais n Para endereços URL que possuam vários caracteres especiais é necessário empregar o construtor com múltiplos parâmetros da classe java.net.uri que codificará estes caracteres: URI uri = new URI("http", "foo.com", "/hello world/", ""); e então converte-lo de URI para URL: URL url = uri.tourl(); MalformedURLException n Todo construtor de objetos URL lança a exceção MalformedURLException se os argumentos do construtor se referenciarem a um endereço inválido, ou cujo protocolo seja desconhecido. n Para capturar esta exceção deverá ser empregado o bloco try...catch: try { URL myurl = new URL(...); catch (MalformedURLException e) {... // tratamento da exceção... 10

Analisando uma URL n A classe URL possui métodos para interrogar os onjetos URL: getprotocol: retorna o protocolo. getauthority: retorna a autoridade gethost:retorna o nome do host. getport: retorna um inteiro crorrespondente ao número da porta. Se a porta não tiver sido selecionda retorna -1. Analisando uma URL getpath: retorna o caminho do componente. getquery: retorna a query. getfile: retorna o nome do arquivo associado à URL. O valor retornado é o mesmo que getpath mais o getquery juntos. getref: retorna a referencia da URL. ParseURL.java import java.net.*; import java.io.*; public class ParseURL { public static void main(string[] args) throws Exception { URL umaurl = new URL("http://java.sun.com:80/docs/books/tutorial" + "/index.html?name=networking#downloading"); System.out.println("protocol = " + umaurl.getprotocol()); System.out.println("authority = " + umaurl.getauthority()); System.out.println("host = " + umaurl.gethost()); System.out.println("port = " + umaurl.getport()); System.out.println("path = " + umaurl.getpath()); System.out.println("query = " + umaurl.getquery()); System.out.println("filename = " + umaurl.getfile()); System.out.println("ref = " + umaurl.getref()); 11

Lendo de uma URL n Uma vez criado o objeto URL, é possível obter um stream para ler o conteúdo da URL através do método openstream(). n O método openstream() retorna um objeto do tipo: java.io.inputstreamobject n Para ler de uma URL procede-se da mesma forma que de um input stream. URLReader.java import java.net.*; import java.io.*; public class URLReader { public static void main(string[] args) throws Exception { URL yahoo = new URL("http://www.yahoo.com/"); BufferedReader in = new BufferedReader( new InputStreamReader( yahoo.openstream())); String inputline; while ((inputline = in.readline())!= null) System.out.println(inputLine); in.close(); Conectando-se a uma URL n Uma vez instanciado o objeto URL pode-se chamar o método openconnection para criar um objeto URLConnection, ou uma das classes derivadas específicas para cada tipo de protocolo, como por exemplo: java.net.httpurlconnection 12

Conectando-se a uma URL n A conexão com a URL remota só se inicia quando o método URLConnection.connect é chamado. n Ao ser chamado este método inicia-se a comunicação entre o programa Java e a URL através da rede. n Um novo objeto URLConnection object é criado toda vez que o método openconnection é chamado. Conectando-se a uma URL try { URL yahoo = new URL("http://www.yahoo.com/"); URLConnection yahooconnection = yahoo.openconnection(); yahooconnection.connect(); catch (MalformedURLException e) { // new URL() failed... catch (IOException e) { // openconnection() failed... Conectando-se a uma URL n Nem sempre é necessário chamar o método connect para iniciar a conexão. n Operações que depende da conexão para acontecer, tais como, getinputstream, getoutputstream, implicitamente geram a conexão necessária. n Uma vez conectado a URL pode-se ler ou escrever através da conexão. 13

URLConnectionReader.java import java.net.*; import java.io.*; public class URLConnectionReader { public static void main(string[] args) throws Exception { URL yahoo = new URL("http://www.yahoo.com/"); URLConnection yc = yahoo.openconnection(); BufferedReader in = new BufferedReader( new InputStreamReader( yc.getinputstream())); String inputline; while ((inputline = in.readline())!= null) System.out.println(inputLine); in.close(); Escrevendo em uma URL n Muitas páginas HTML usam o HTTP POST METHOD para enviar dados para o servidor. n Escrever numa URL também é conhecido como posting para uma URL. n O servidor reconhece a solicitação POST e lê os dados enviados pelo cliente. Escrevendo em uma URL n Para um programa interagir com um servidor ele deve ser capaz de escrever em uma URL e isto é possível através dos seguintes passos: Criar um objeto URL. Referenciar o objeto URLConnection. Estabelecer a capacidade de escrever no objeto URLConnection. Conectar-se a um recurso. Instanciar um output stream a partir da conexão. Escrever no output stream. Fechar output stream. 14

Escrevendo em uma URL import java.io.*; import java.net.*; public class Reverse { public static void main(string[] args) throws Exception { if (args.length!= 2) { System.err.println("Usage: java Reverse " + "http://<location of your servlet/script>" + " string_to_reverse"); System.exit(1); String stringtoreverse = URLEncoder.encode(args[1], "UTF-8"); URL url = new URL(args[0]); URLConnection connection = url.openconnection(); connection.setdooutput(true); OutputStreamWriter out = new OutputStreamWriter( connection.getoutputstream()); out.write("string=" + stringtoreverse); out.close(); BufferedReader in = new BufferedReader( new InputStreamReader( connection.getinputstream())); String decodedstring; while ((decodedstring = in.readline())!= null) { System.out.println(decodedString); in.close(); 15