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 Hugo Simões Original por: Flávio.

Apresentações semelhantes


Apresentação em tema: "Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP Hugo Simões Original por: Flávio."— Transcrição da apresentação:

1 Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP Hugo Simões (hsms87@gmail.com)hsms87@gmail.com Original por: Flávio Almeida (faas@cin.ufpe.br)faas@cin.ufpe.br Professor: Paulo Gonçalves (pasg@cin.ufpe.br)pasg@cin.ufpe.br CIn/UFPE

2 Importante: Cadastro no grupo da disciplina: http://groups.google.com.br/group/infra- comunicao2008-1/subscribehttp://groups.google.com.br/group/infra- comunicao2008-1/subscribe

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

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

5 5 Comunicação entre processos  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 Analogia: Casa e porta (processo e socket)

6 Interação dos programas cliente e servidor (TCP) [1/2] 1.Cliente tem a tarefa de iniciar contato com o servidor. 2. Servidor deve está pronto:  ativo, rodando antes do cliente tentar iniciar contato  possuir alguma porta (socket) para acolher algum contato inicial de um processo cliente. 3. O processo cliente pode iniciar uma conexão TCP, o que é feito a partir da criação de um socket  parâmetros do socket : Endereço IP do hospedeiro servidor e o número de porta do processo servidor Analogia: ‘bater à porta’ (contato inicial)

7 Interação dos programas cliente e servidor (TCP) [2/2] 4. TCP cliente inicia uma apresentação de 3 vias e estabelece uma conexão TCP com Servidor  cliente “bate” no socket de entrada do servidor  servidor ‘ouve’ a batida e cria um novo socket dedicado àquele cliente  Ao final da apresentação, existe uma conexão TCP entre o socket cliente e o novo socket do servidor

8 8 Programação de Socket TCP - Client import java.io.*; import java.net.*; class TCPClient { public static void main(String argv[]) throws Exception { String sentence; String modifiedSentence; BufferedReader inFromUser = // cria Stream de entrada (teclado) new BufferedReader(new InputStreamReader(System.in)); Socket clientSocket = new Socket("hostname", 8000); // cria Socket Cliente, conecta ao servidor DataOutputStream outToServer = // cria Stream de saida(do cliente pro servidor) new DataOutputStream(clientSocket.getOutputStream()); // junto ao socket cliente BufferedReader inFromServer =new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); // cria Stream de entrada (vindo servidor) // junto ao socket cliente sentence = inFromUser.readLine(); outToServer.writeBytes(sentence + '\n'); // envia a string ao servidor modifiedSentence = inFromServer.readLine(); // ler string que veio do servidor System.out.println("FROM SERVER: " + modifiedSentence); clientSocket.close(); }

9 9 Programação de Socket TCP - Server import java.io.*; import java.net.*; class TCPServer { public static void main(String argv[]) throws Exception { String clientSentence; String capitalizedSentence; ServerSocket welcomeSocket = new ServerSocket(8000); //cria porta de entrada de numero 8000 while(true) { Socket connectionSocket = welcomeSocket.accept(); // Aguardando no socket de entrada, um contato do cliente // para criar nova porta dedicada ao cliente especifico BufferedReader inFromClient = // cria Stream de entrada (vindo do Cliente) junto ao socket de conex new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); DataOutputStream outToClient = //cria Stream de saida (do Servidor pro cliente) junto ao socket de conx new DataOutputStream(connectionSocket.getOutputStream()); clientSentence = inFromClient.readLine(); capitalizedSentence = clientSentence.toUpperCase() + '\n'; outToClient.writeBytes(capitalizedSentence); //envia String para o cliente }

10 10 Programação de Socket UDP - Client import java.io.*; import java.net.*; class UDPClient { public static void main(String args[]) throws Exception { BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); DatagramSocket clientSocket = new DatagramSocket(); InetAddress IPAddress = InetAddress.getByName("hostname"); byte[] sendData = new byte[1024]; byte[] receiveData = new byte[1024]; String sentence = inFromUser.readLine(); sendData = sentence.getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9000); clientSocket.send(sendPacket); DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); clientSocket.receive(receivePacket); String modifiedSentence = new String(receivePacket.getData()); System.out.println("FROM SERVER:" + modifiedSentence); clientSocket.close(); }

11 11 Programação de Socket UDP - Server import java.io.*; import java.net.*; class UDPServer { public static void main(String args[]) throws Exception { DatagramSocket serverSocket = new DatagramSocket(9876); byte[] receiveData = new byte[1024]; byte[] sendData = new byte[1024]; while(true) { DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); serverSocket.receive(receivePacket); String sentence = new String(receivePacket.getData()); InetAddress IPAddress = receivePacket.getAddress(); int port = receivePacket.getPort(); String capitalizedSentence = sentence.toUpperCase(); sendData = capitalizedSentence.getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); serverSocket.send(sendPacket); }

12  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/~ejgcs/comunicacao no link [Aulas]www.cin.ufpe.br/~ejgcs/comunicacao 12 Desenvolver um servidor Web...

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

14 14 Referências 1.James F. Kurose and Keith W. Ross, "Redes de Computadores e a Internet - Uma Nova Abordagem", 3a. edição - 2005 - Ed. Addison Wesley BRA 2.http://www.rfc.net/http://www.rfc.net/ 3.http://www.ietf.org/rfc.htmlhttp://www.ietf.org/rfc.html 4.http://java.sun.com/j2se/1.5.0/docs/api/java/net/package- summary.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/net/package- summary.html 5.http://java.sun.com/j2se/1.5.0/docs/api/java/net/Socket.htmlhttp://java.sun.com/j2se/1.5.0/docs/api/java/net/Socket.html


Carregar ppt "Infra-Estrutura de Comunicação (IF678) Aula Prática 02 Programação de Sockets TCP e UDP Hugo Simões Original por: Flávio."

Apresentações semelhantes


Anúncios Google