Infra-Estrutura de Comunicação (IF678) Aula Prática 02 – 2011.2 CIn/UFPE Davi Duarte Cynthia Raphaella Ivan França Jéssica Barbalho Larissa Paz Paulo Fernando.

Slides:



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

Parte 2: Camada de Aplicação
I/O Carlos Bazilio Depto de Ciência e Tecnologia
Interações cliente/servidor usando o UDP
Sockets Marco Antonio – marcoreis.net Arquiteto de Software Dezembro/2007.
Entrada e Saída Marco Antonio Arquiteto de Software Dezembro/2007.
Comunicação entre processos distribuídos
Sistemas Distribuídos
Tratamento de Exceções
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.
Orientação a Objetos: Modificador Final para Métodos e Classes
1 Java: Tratamento de Exceções Alcides Calsavara.
Redes de computadores Prof. Nelson Fonseca 2: Camada de Aplicação.
Capítulo 2: Roteiro 2.1 Princípios dos protocolos da camada de aplicação 2.2 Web e HTTP 2.3 FTP 2.4 Correio Eletrônico SMTP, POP3, IMAP 2.5 DNS 2.6 Compartilhamento.
Streams Java.
Sistemas Paralelos e Distribuídos
Camada de Aplicação Teleprocessamento e Redes
Ronaldo Celso Messias Correia
Membros estáticos.
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.
04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream.
Objetos Distribuídos - Programação Distribuída Orientado a Objetos Luiz Affonso Guedes.
Estrutura de Dados em Java
Introdução à Programação Distribuída em Java
Capítulo 2 Camada de aplicação
Linguagens de Programação
Threads, Gerenciamento de Threads Pool de Threads, Grupo de Threads Variáveis Locais à Threads.
JAVA MULTITHREADING TECHNIQUES
Infra-Estrutura de Comunicação (IF678)
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.
Java em Redes de Computadores
Streams –input e output
Linguagem técnica de programação I Java
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
Capítulo 1. static import  A importação estática pode ser utilizado quando queremos acessar métodos ou atributos estáticos de uma outra classe.  Através.
Tipos Especiais de Listas
Alisson Rafael Appio SOP aplicado em um jogo tipo de corrida usando a arquitetura cliente e servidor Alisson Rafael Appio
Nível Transporte Fornece aos níveis superiores serviço eficiente e confiável entre máquina de origem e destino, independente das redes utilizadas. Torna.
Java e Serviço de Transporte Vitor Brandi Junior.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
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
Polimorfismo.
Estrutura de Controle em JAVA
M ÉTODOS DA C LASSE S TRING. FUNÇÕES COM STRING Uma string é um tipo texto que corresponde à união de um conjunto de caracteres. Em Java, as strings são.
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 -
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.
Paulo Roberto Freire Cunha
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.
Capítulo 2 Redes de computadores e a Internet Camada de aplicação Prof. Gustavo Wagner.
Curso Superior em Redes de Computadores Camada de Aplicação Prof. Sales Filho.
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
Sistemas Distribuídos Aula 6
AsyncTask e Socket no Android
UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA
Programação para Dispositivos Móveis: API Web e Comandos Gerais
Leitura do teclado e Interface gráfica
RESULUÇÃO DOS EXERCÍCIOS,
Programação Orientada a Objetos
Transcrição da apresentação:

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

2 Nosso objetivo: Revisão rápida sobre Socket Programação de Sockets TCP e UDP com Java Desenvolver um servidor Web Desenvolver um sistema de controle de diretórios

C OMUNICAÇÃO ENTRE PROCESSOS 3 Processos em hosts distintos comunicam-se por meio de envio de mensagens... enviadas e recebidas através de seu socket Socket é a interface entre a camada de aplicação e a de transporte

P ROGRAMAÇÃO DE S OCKET TCP - C LIENT import java.io.*; import java.net.*; import java.util.Scanner; public class TCPclient { public static void main(String[] args) throws Exception { //lendo do teclado String inFromUser = new Scanner(System.in).next(); //criando um socket TCP Socket sock = new Socket("localhost", 2000); //stream de saida DataOutputStream socketOut = new DataOutputStream(sock.getOutputStream()); socketOut.writeBytes(inFromUser + '\n'); //resposta do servidor BufferedReader socketIn = new BufferedReader(new InputStreamReader(sock.getInputStream())); System.out.println(socketIn.readLine()); } 4

P ROGRAMAÇÃO DE S OCKET TCP - S ERVER import java.io.*; import java.net.*; public class TCPserver { public static void main(String argv[]) throws Exception { String inFromClient; String outToClient; //socket de "boas vindas" ServerSocket welcomeSocket = new ServerSocket(2000); while(true) { //socket de conexão TCP Socket sock = welcomeSocket.accept(); //buffer de entrada, que recebe um stream BufferedReader socketIn = new BufferedReader(new InputStreamReader(sock.getInputStream())); inFromClient = socketIn.readLine(); outToClient = inFromClient.toUpperCase() + '\n'; //stream de saida DataOutputStream socketOut = new DataOutputStream(sock.getOutputStream());//stream de saida //escrevendo no socket socketOut.writeBytes(outToClient); sock.close(); } 5

E XERCÍCIO Faça um Hello [endereço IP do servidor] e retorne do servidor um HELLO [endereço IP do cliente] OBS: O cliente deve fechar a conexão após receber a resposta do servidor ou dar um timeout de 30 segundos.

P ROGRAMAÇÃO DE S OCKET UDP - C LIENT import java.net.*; import java.util.Scanner; class UDPclient { public static void main(String args[]) throws Exception { String inFromUser = new Scanner(System.in).next() + '\n'; //entrada do usuário DatagramSocket clientSocket = new DatagramSocket(); //socket UDP InetAddress IPServer = InetAddress.getByName("localhost"); //IP do servidor byte[] sendData = new byte[1024]; //dados a serem enviados sendData = inFromUser.getBytes(); //criando o pacote de envio DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPServer, 5000); clientSocket.send(sendPacket); byte[] receiveData = new byte[1024]; //dados recebidos DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); //recebendo o pacote String inFromServer = new String(receivePacket.getData()); System.out.println("FROM SERVER: " + inFromServer); clientSocket.close(); } 7

P ROGRAMAÇÃO DE S OCKET UDP - S ERVER import java.net.*; class UDPserver { public static void main(String args[]) throws Exception { DatagramSocket serverSocket = new DatagramSocket(5000); byte[] receiveData = new byte[1024] ; byte[] sendData = new byte[1024]; String inFromClient, outToClient; InetAddress clientIP; int port; while(true) { //pacote a ser recebido DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); serverSocket.receive(receivePacket); //recebendo o pacotes inFromClient = new String(receivePacket.getData()); //colocando na string os dados recebidos clientIP = receivePacket.getAddress(); //pegando o IP e porta do pacote que chegou port = receivePacket.getPort(); outToClient = inFromClient.toUpperCase(); sendData = outToClient.getBytes(); //enviando pacote de resposta DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, clientIP, port); serverSocket.send(sendPacket); } 8

E XERCÍCIO Faça, por meio de UDP, o cliente enviar dois números e o servidor responder com a subtração deles. OBS: O cliente deve encerrar após receber a resposta do servidor ou dar um timeout de 30 segundos. 9

E XERCÍCO : E XPLIQUE O QUE FAZ A APLICAÇÃO A SEGUIR import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; public class PortScan { public static String endereco = "localhost"; public static void main(String[] args) { StringBuffer portasOk, portasNok; portasOk = new StringBuffer(); portasNok = new StringBuffer(); Socket s; for (int i = 70 ; i <= 100; i++){ try { s = new Socket(endereco, i); portasOk.append(i + " "); System.out.println("Porta " + i + " Aberta"); s.close(); } catch (UnknownHostException h){ System.out.println(h.getMessage()); System.exit(0); 10 } catch (IOException e) { portasNok.append(i + " "); System.out.println("Porta " + i + " Fechada"); } }//for System.out.println("Portas abertas: " + portasOk.toString() + "\nPortas fechadas: " + portasNok.toString()); }//main }

E XERCÍCIOS Suponha um servidor UDP aceitando pacotes na porta É possível que mais de um computador envie pacotes UDP para tal host e tal porta? Por quê? Suponha um servidor TCP com uma conexão já aberta com um host clienteA. É possível a qualquer outro host cliente mandar dados ao servidor usando a conexão do clienteA já aberta? Por quê? 11

Trata-se de um servidor Web, que responderá a requisições HTTP, bastante simples. Com as seguintes regras: Deve ser implementado utilizando-se a API de Java Ele deve manipular apenas uma requisição HTTP; Ele deve enviar uma mensagem de resposta ao cliente contendo linhas de cabeçalho e o objeto desejado, se existente; A única verificação necessária é quando o objeto não for encontrado, deve-se retornar: HTTP/ Not Found Teste seu servidor utilizando um navegador qualquer! Mantenha os arquivos que serão baixados na mesma pasta do seu projeto Dicas: - utilize as classes ServerSocket, Socket, StringTokenizer e File - reveja a aula sobre HTTP - consulte a RFC[2616] - baixar código parcial em A TIVIDADE 1: D ESENVOLVER UM SERVIDOR W EB... 12

13 E XEMPLO – O QUE DEVE SER FEITO Requisição (via browser ou telnet) telnet: GET /index.html HTTP/1.0 Host: localhost Browser: Resposta (seu servidor) HTTP/ OK Content-Language: pt-BR Content-Length: 53 Content-Type: text/html Connection: close CRLF enter dados... Requisição (via browser ou telnet) telnet: GET /img2.png HTTP/1.0 Host: localhost Browser: Resposta (seu servidor) HTTP/ OK Content-Language: pt-BR Content-Length: 733 Content-Type: image/png Connection: close CRLF enter dados...

Faça um programa cliente/servidor que permita ao cliente listar o conteúdo, apagar e criar subdiretórios em uma pasta raiz pré-definida no servidor. Exemplo: O cliente envia o comando list pasta raiz. O servidor retorna a listagem da pasta raiz Exemplo: O cliente envia o comando new subdir1. O servidor cria a pasta subdir1 dentro da pasta raiz Exemplo: O cliente envia o comando dele subdir1. O servidor apaga a pasta subdir1 A TIVIDADE 2: