Comunicação em Rede no JAVA

Slides:



Advertisements
Apresentações semelhantes
Sistemas Operacionais II N Aula prática Java Sockets, RPC e RMI Eduardo Bezerra.
Advertisements

Interações cliente/servidor usando o UDP
Sockets Marco Antonio – marcoreis.net Arquiteto de Software Dezembro/2007.
Comunicação entre processos distribuídos
Ir p/ primeira página Cliente/Servidor Modelo usado para construir aplicações Servidor em número de porta conhecido – Aceita requisições e executa serviços.
Java RMI Alcides Calsavara. Objetivos Permitir que um método de uma classe Java em execução em uma máquina virtual JVM chame um método de um objeto (instância.
O conceito de socket Uma comunicação entre dois processos via TCP (ou UDP) é identificada unívocamente por dois pares de valores, que denotam os dois pontos.
Sistemas Paralelos e Distribuídos
26/09/2005 LCMI - DAS - UFSC 1 Introdução aos Sockets Java Fábio Favarim DAS – Departamento de Automação e Sistemas UFSC – Universidade.
1 Introdução aos Sockets (Java) Tiago Semprebom DAS – Departamento de Automação e Sistemas UFSC – Universidade Federal de Santa Catarina.
FEUPDEECRedes de Computadores, 4º Ano de EEC, ramo de ACI Sockets Abril, 98Isidro Vila Verde 1 Formato das estruturas de dados Estrutura.
Anália Lima (alc5) Bruno Gentilini (bgda) Eduardo Souza (efs) Ivan França (ilfn) Infra-Estrutura de comunicação Aula Prática Programação de Sockets TCP.
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 – CIn/UFPE Davi Duarte Denyson José Eduardo Souza Ivan França Rafael Lima.
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 – CIn/UFPE Davi Duarte Cynthia Raphaella Ivan França Jéssica Barbalho Larissa Paz Paulo Fernando.
Java em Redes de Computadores
Streams –input e output
Programação com sockets
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP Professor: Paulo Gonçalves CIn/UFPE.
Comunicação Entre Processos Sockets - Java
Tipos Especiais de Listas
Java e Serviço de Transporte Vitor Brandi Junior.
Infra-Estrutura de Comunicação (IF678) Aula Prática CIn/UFPE Rafael Lucena Roberta Mota Rubens Lopes Rodolfo Santos João Pedro Cordeiro.
Implementando comunicação em JAVA via Sockets Alcides Calsavara - Leonardo R. Nunes -
Programação distribuída e concorrente
Estrutura de Controle em JAVA
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Desenvolvimento de Aplicações TCP/IP com Sockets Márcio de Sousa Dias
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP Hugo Simões Original por: Flávio.
Redes de Computadores I Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Socket em Java.
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP CIn/UFPE Bruno Gentilini Eduardo Souza Amora Albuquerque Anália.
Programação Distribuída em Java Aula Na aula passada vimos: I/O Streams Filtros Readers and Writers.
Programação Distribuída em Java Aula Na aula passada vimos: I/O Sockets.
Programação Distribuída em Java Aula Na aula passada vimos Domain Name Server –Funcionamento básico O pacote java.net –Sua finalidade A classe InetAddress.
Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP Professor: Paulo Gonçalves CIn/UFPE.
V Seminário RSJUG Confraria do Java JavaDB Um Banco de Dados 100% Java Profa. Me. Karen Selbach Borges.
Capítulo 2 Redes de computadores e a Internet Camada de aplicação Prof. Gustavo Wagner.
PROGRAMANDO EM JAVA Dilvan Moreira (baseado no livro Big Java)
Curso Superior em Redes de Computadores Camada de Aplicação Prof. Sales Filho.
UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Ciência da Computação 2o. Semestre / 2006 Prof. Fábio M. Costa
Programação em Java Sockets Prof. Luiz Antonio Rodrigues Prof. Luiz Antonio Unioeste - Cascavel Jpanel e Diagramadores.
UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Ciência da Computação 2o. Semestre / 2006 Prof. Fábio M. Costa
UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Ciência da Computação 2o. Semestre / 2006 Prof. Fábio M. Costa
UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Ciência da Computação 2o. Semestre / 2006 Prof. Fábio M. Costa
Classes Objetos Atributos Métodos Coletor de Lixo (Garbage Collector ) Confraria do Java Nivelamento. Caroline, Marcelo e Luiz 12/05/2007.
PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS. COMUNICAÇÃO WEB.
Sistemas Distribuídos Aula 6
Soquetes (1) SOCKET Uma interface local, criada por aplicações, ponto final de comunicação no qual os processos de aplicação podem tanto enviar quanto.
AsyncTask e Socket no Android
UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA
3.1 Classes e Objetos Em um programa orientado a objetos normalmente existem vários objetos de um mesmo tipo. Por exemplo, um programa de controle de.
Singleton e Template Method
Programação para Dispositivos Móveis: API Web e Comandos Gerais
TQS - Teste e Qualidade de Software (Software Testing and Quality) Geração Automática de Casos de Teste com a Ferramenta.
Tipos de Arquivos Arquivos podem armazenar caracteres (arquivo texto) ou bytes (arquivos binários); Na prática, arquivos textos são abertos por editores.
Desenvolvimento de Sistemas Orientados a Objetos
Remote Method Invocation
Wrappers.
3.1.7 Variáveis de Classe e Instância
Programa Expresso de Capacitação Módulo J2ME
AsyncTask e Socket no Android
Programação para dispositivos moveis Fabiano Gonçalves dos Santos Aula 10.
Rosemary Silveira Filgueiras Melo
DSI – Desenvolvimento de Sistemas Inteligentes
Leitura do teclado e Interface gráfica
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação Orientada a Objetos
RESULUÇÃO DOS EXERCÍCIOS E
Transcrição da apresentação:

Comunicação em Rede no JAVA Aspectos básicos Sockets URL’s Nuno Valero Ribeiro Gab. F269 nribeiro@est.ips.pt 5-dez-18

Comunicação através de TCP/IP Todas as classes de comunicação em rede estão definidas no package java.net. Classes para comunicação através de TCP: Socket, SocketServer, URL, URLConnection. Classes para comunicação através de UDP: DatagramSocket, e DatagramPacket. Nuno Valero Ribeiro Gab. F269 nribeiro@est.ips.pt 5-dez-18

Classe Socket - construtores Cria um socket sem ligação. Socket(InetAddress addr, int port) Cria um stream socket e liga-o a ao endereço addr e ao porto port. Socket(InetAddress rAddr, int rPort, InetAddress lAaddr, int lPort) Cria um stream socket e liga-o a ao endereço rAddr e ao porto rPort. Associa o socket (bind) ao endereço local lAddr e ao porto local lPort. Socket(String host, int) Cria um stream socket e liga-o a host host e ao porto port. Socket(String rHost, int rPort, InetAddress lAddr, int lPort) Cria um stream socket e liga-o a ao host rHost e ao porto rPort. Associa o socket (bind) ao endereço local lAddr e ao porto local lPort. Nuno Valero Ribeiro Gab. F269 nribeiro@est.ips.pt 5-dez-18

Classe Socket - métodos close() Fecha o socket. InetAddress getInetAddress() Retorna o endereço a que o socket está ligado. InputStream getInputStream() Retorna um InputStream para o socket. InetAddress getLocalAddress() Retorna o endereço local a que o socket está associado int getLocalPort() Retorna o porto local a que o socket está associado. OutputStream getOutputStream() Retorna um OutputStream para o socket. Int getPort() Retorna o porto remoto a que o socket está ligado. setSoTimeout(int tout) Activa (tout > 0)/ desactiva (tout = 0) a flag SO_TIMEOUT, com o timeout especificado em milisegundos. Nuno Valero Ribeiro Gab. F269 nribeiro@est.ips.pt 5-dez-18

Classe Socket - exemplo import java.io.*; import java.net.*; public class EchoClient { public static void main(String[] args) throws IOException { Socket echoSocket = null; PrintWriter out = null; BufferedReader in = null; try { echoSocket = new Socket("taranis", 7); out = new PrintWriter(echoSocket.getOutputStream(), true); in = new BufferedReader(new InputStreamReader(echoSocket.getInputStream())); } catch (UnknownHostException e) { System.err.println("Don't know about host: taranis."); System.exit(1); } catch (IOException e) { System.err.println("Couldn't get I/O for the connection to: taranis."); } BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in)); String userInput; while ((userInput = stdIn.readLine()) != null) { out.println(userInput); System.out.println("echo: " + in.readLine()); out.close(); in.close(); stdIn.close(); echoSocket.close(); Classe Socket - exemplo Nuno Valero Ribeiro Gab. F269 nribeiro@est.ips.pt 5-dez-18

Classe ServerSocket - construtores ServerSocket(int port) Cria um ServerSocket associado ao porto port. ServerSocket(int port, int backlog) Cria um ServerSocket associado ao porto port aceitando maxlog ligações ServerSocket(int port, int backlog, InetAddress bindAddr) Cria um ServerSocket associado ao porto port aceitando maxlog ligações e associado ao endereço bindAddr Nuno Valero Ribeiro Gab. F269 nribeiro@est.ips.pt 5-dez-18

Classe ServerSocket - métodos Socket accept() Espera por ligações no socket. Retorna um novo socket quando a ligação é estabelecida. close() Fecha um ServerSocket. InetAddress getInetAddress() Retorna o endereço local a que o socket está associado. Int getLocalPort() Retorna o porto local a que o socket está associado. Int getSoTimeout() Retorna o estado da flag SO TIMEOUT. setSoTimeout(int) Activa (tout > 0)/ desactiva (tout = 0) a flag SO_TIMEOUT, com o timeout especificado em milisegundos. Nuno Valero Ribeiro Gab. F269 nribeiro@est.ips.pt 5-dez-18

Gab. F269 nribeiro@est.ips.pt import java.net.*; import java.io.*; class EchoTcpServer { public static void main(String[] args) { ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(4444); } // ... Socket clientSocket = null; try {clientSocket = serverSocket.accept();} try { BufferedReader is = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); PrintWriter os = new PrintWriter(clientSocket.getOutputStream() ), false); String inputLine, outputLine; while ((inputLine = is.readLine()) != null) { System.out.println("inputLine = " + inputLine); outputLine = new String(inputLine); os.println(outputLine); os.flush(); } Nuno Valero Ribeiro Gab. F269 nribeiro@est.ips.pt 5-dez-18

Classe DatagramSocket - construtores Constructs a datagram socket and binds it to any available port on the local host machine. DatagramSocket(int) Constructs a datagram socket and binds it to the specied port on the local host machine. DatagramSocket(int, InetAddress) Creates a datagram socket, bound to the specied local address. Nuno Valero Ribeiro Gab. F269 nribeiro@est.ips.pt 5-dez-18

Classe DatagramSocket - métodos close() Closes this datagram socket. getLocalAddress() Gets the local address to which the socket is bound. getLocalPort() Returns the port number on the local host to which this socket is bound. getSoTimeout() Retrive setting for SO TIMEOUT. receive(DatagramPacket) Receives a datagram packet from this socket. send(DatagramPacket) Sends a datagram packet from this socket. setSoTimeout(int) Enable/disable SO TIMEOUT with the specied timeout, in milliseconds. Nuno Valero Ribeiro Gab. F269 nribeiro@est.ips.pt 5-dez-18

Classe DatagramPacket - construtores DatagramPacket(byte[], int) Constructs a DatagramPacket for receiving packets of length ilength. DatagramPacket(byte[], int, InetAddress, int) Constructs a datagram packet for sending packets of length ilength to the specied port numberon the specied host. Nuno Valero Ribeiro Gab. F269 nribeiro@est.ips.pt 5-dez-18

Classe DatagramPacket - métodos InetAddress getAddress() Returns the IP address of the machine to which this datagram is being sent or from which the datagram was received. getData() Returns the data received or the data to be sent. Int getLength() Returns the length of the data to be sent or the length of the data received. Int getPort() Returns the port number on the remote host to which this datagram is being sent or from which the datagram was received. setAddress InetAddress) setData (byte[]) setLength (int) setPort(int) Nuno Valero Ribeiro Gab. F269 nribeiro@est.ips.pt 5-dez-18

Classe URL- construtores URL(String) Creates a URL object from the String representation. URL(String, String, int, String) Creates a URL object from the specied protocol, host, port number, and le. URL(String, String, String) Creates an absolute URL from the specied protocol name, host name, and le name. Nuno Valero Ribeiro Gab. F269 nribeiro@est.ips.pt 5-dez-18

Gab. F269 nribeiro@est.ips.pt Classe URL - métodos int hashCode() Retorna um inteiro para indexação numa tabela de hash. URLConnection openConnection() Retorna um objecto URLConnection , que representa uma ligação com o objecto referenciado pelo URL InputStream openStream() Abre uma ligação com o URL e retorna um InputStream (equivalente a openConnection().getInputStream() ) boolean sameFile(URL) Compara dois URLs excluindo os campos de referência (ancoras). set(String proto, String host, int port, String file, String ref) Define os vários campos do URL boolean equals(Object) Compara dois URLs. Object getContent() Retorna o conteúdo de um URL (equivalente a openConnection().getContent() ) String getFile() Retorna o nome do ficheiro no URL. String getHost() Retorna o nome do host no URL. int getPort() Retorna o porto no URL. String getProtocol() Retorna o nome do protocolo no URL. String getRef() Retorna a ancora (referência )no URL. Nuno Valero Ribeiro Gab. F269 nribeiro@est.ips.pt 5-dez-18

Gab. F269 nribeiro@est.ips.pt import java.net.*; import java.io.*; class URLReader { public static void main(String[] args) { try { URL urlRef = new URL("http://www.deec.isel.pt/programacao/TI/"); BufferedReader is = new BufferedReader(new InputStreamReader(urlRef.openStream())); String inputLine; while ((inputLine = is.readLine()) != null) { System.out.println(inputLine); } is.close(); } catch (MalformedURLException me) { System.out.println("MalformedURLException: " + me); } catch (IOException ioe) { System.out.println("IOException: " + ioe); } Nuno Valero Ribeiro Gab. F269 nribeiro@est.ips.pt 5-dez-18

Gab. F269 nribeiro@est.ips.pt import java.net.*; import java.io.*; public class ParseURL { public static void main(String[] args) throws Exception { String url; System.out.println("URL: " + args[0]); if(args.length != 0) url = args[0]; else url = "http://java.sun.com:80/docs/books/tutorial/intro.html#DOWNLOADING"; URL aURL = new URL(url); System.out.println("protocol = " + aURL.getProtocol()); System.out.println("host = " + aURL.getHost()); System.out.println("filename = " + aURL.getFile()); System.out.println("port = " + aURL.getPort()); System.out.println("ref = " + aURL.getRef()); } Nuno Valero Ribeiro Gab. F269 nribeiro@est.ips.pt 5-dez-18

Gab. F269 nribeiro@est.ips.pt Classe URLConnection Classe abstracta que representa uma comunicação entre uma aplicação e um URL. Instâncias desta classe podem ser usadas para ler e escrever para o recurso referenciado pelo URL. A criação de uma ligação para um URL envolve os seguintes passos: O objecto URLConnection é obtido através da invocação do método openConnection de um URL. Manipulação dos parâmetros da ligação e das propriedades dos pedidos. Estabelecimento da ligação com o objecto remoto, através do método connect. O objecto remoto fica disponível. Os campos dos cabeçalhos e o conteúdo do objecto podem ser acedidos. Nuno Valero Ribeiro Gab. F269 nribeiro@est.ips.pt 5-dez-18

Classe URLConnection - construtores protected URLConnection(URL) O construtor desta classe apenas pode ser acedido por classes derivadas. A ligação com o objecto referenciado no URL não é criada. Nuno Valero Ribeiro Gab. F269 nribeiro@est.ips.pt 5-dez-18

Gab. F269 nribeiro@est.ips.pt Classe URL - métodos Estabelecimento da ligação connect() Definição de parâmetros da ligação setAllowUserIteraction(boolean) setDefaultAllowUserIteraction(boolean) setDoInput(boolean) setDoOutput(boolean) setIfModifiedSince(long) setUseCaches(boolean) setDefaultUseCaches(boolean) Definição das propriedades dos pedidos setRequestProperty(String key, String value) setDefaultRequestProperty(String key, String value) Acesso aos campos do cabeçalho e ao conteúdo do objecto referênciado Object getContent() String getHeaderField(String) String getHeaderField(int) InputStream getInputStream() OutputStream getOutputStream() Campos do cabeçalho acedidos frequentemente String getContentEncoding() int getContentLength() String getContentType() long getDate() long getExpiration() long getLastModified() Nuno Valero Ribeiro Gab. F269 nribeiro@est.ips.pt 5-dez-18

Gab. F269 nribeiro@est.ips.pt 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(); } Nuno Valero Ribeiro Gab. F269 nribeiro@est.ips.pt 5-dez-18

Classe URLConnection - exemplo 2 import java.io.*; import java.net.*; public class Reverse { public static void main(String[] args) throws Exception { if (args.length != 1) { System.err.println("Usage: java Reverse string_to_reverse"); System.exit(1); } String stringToReverse = URLEncoder.encode(args[0]); URL url = new URL("http://java.sun.com/cgi-bin/backwards"); URLConnection connection = url.openConnection(); connection.setDoOutput(true); PrintWriter out = new PrintWriter(connection.getOutputStream()); out.println("string=" + stringToReverse); out.close(); BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close(); } Nuno Valero Ribeiro Gab. F269 nribeiro@est.ips.pt 5-dez-18