A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

1 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 Lima Cleivson Siqueira Ivan França

2 Nosso objetivo:  Revisão rápida sobre Socket  Programação de Sockets TCP e UDP  Desenvolver um servidor Web 2

3 Agenda 3 1.Comunicação entre processos 2.Programação de Socket TCP 3.Programação de Socket UDP 4.Desenvolver um servidor Web...

4 Comunicação entre processos 4  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

5 Programação de Socket TCP - Client 5 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()); }

6 Programação de Socket TCP - Server 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(); } 6

7 Exercí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.

8 Programação de Socket UDP - Client 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(); } 8

9 Programação de Socket UDP - Server 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); } 9

10 Exercício Faça, por meio de uma conexão UDP, o cliente enviar dois números e o servidor responder com a soma deles. OBS: O cliente deve encerrar após receber a resposta do servidor ou dar um timeout de 30 segundos. 10

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/1.0 404 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 o RFC[2616] - baixar código parcial em www.cin.ufpe.br/~ilfnwww.cin.ufpe.br/~ilfn Desenvolver um servidor Web... 11

12 12 Exemplo – O que deve ser feito Requisição (via browser ou telnet) telnet: GET /index.html HTTP/1.0 Host: localhost Browser: http://ip:porta Resposta (seu servidor) HTTP/1.0 200 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: http://ip:porta Resposta (seu servidor) HTTP/1.0 200 OK Content-Language: pt-BR Content-Length: 733 Content-Type: image/png Connection: close CRLF “enter” dados...

13 Exercício do Temporizador O exercício deverá ser apresentado (pessoalmente) aos monitores. A data máxima para apresentar será definida Obs: Não mandar emails individualmente para um monitor, pois a dúvida de um pode ser a dúvida de muitos 13

14 Exercício do Temporizador(cont.) Deverá ser desenvolvido um programa que rode em duas máquinas distintas. O programa terá as seguintes funcionalidades: 1. Os dois hosts (A e B) devem estabelecer uma conexão TCP 2. O host A deve enviar ao host B um pacote realizando uma solicitação ara a hora do sistema em B 3. O host A deve receber um pacote do host B com a hora do sistema em B 4. O host A deve mostrar na tela a hora do sistema em B, e também, o RTT calculado em relação a solicitação ◦ A hora mostrada na tela deve seguir o formato: dia/mês/ano hora:minutos:segundos milissegundos” IMPORTANTE: O lado B irá enviar a informação para A na forma de bytes. Não pode transformar a hora do sistema em um Objeto (como String), e utilizar a função writebytes para escrever no pacote O lado B deve enviar um pacote com tamanho de 8 bytes, suficiente para enviar os 1 long relativos à hora do sistema 14


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google