Infra-Estrutura de Comunica - PowerPoint PPT Presentation

About This Presentation
Title:

Infra-Estrutura de Comunica

Description:

Infra-Estrutura de Comunica o (IF678) Aula Pr tica 02 Programa o de Sockets TCP e UDP Hugo Sim es (hsms87_at_gmail.com) Original por: Fl vio Almeida (faas_at_cin ... – PowerPoint PPT presentation

Number of Views:80
Avg rating:3.0/5.0
Slides: 15
Provided by: faas
Category:

less

Transcript and Presenter's Notes

Title: Infra-Estrutura de Comunica


1
Infra-Estrutura de Comunicação(IF678)
Aula Prática 02 Programação de Sockets TCP e UDP
Hugo Simões (hsms87_at_gmail.com) Original por
Flávio Almeida (faas_at_cin.ufpe.br)
Professor Paulo Gonçalves (pasg_at_cin.ufpe.br)
CIn/UFPE
2
Importante
  • Cadastro no grupo da disciplina
  • http//groups.google.com.br/group/infra-comunicao2
    008-1/subscribe

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

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
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
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.getOutputStrea
    m()) // 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()

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(connecti
    onSocket.getInputStream()))
  • DataOutputStream outToClient //cria Stream de
    saida (do Servidor pro cliente) junto ao socket
    de conx

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("hos
    tname")
  • byte sendData new byte1024
  • byte receiveData new byte1024
  • 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)

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 byte1024
  • byte sendData new byte1024
  • 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)

12
Desenvolver um servidor Web...
  • 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 RFC2616
  • baixar código parcial em www.cin.ufpe.br/ejgcs/c
    omunicacao no link Aulas

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
  • ...

13
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/
  3. http//www.ietf.org/rfc.html
  4. http//java.sun.com/j2se/1.5.0/docs/api/java/net/p
    ackage-summary.html
  5. http//java.sun.com/j2se/1.5.0/docs/api/java/net/S
    ocket.html

14
Write a Comment
User Comments (0)
About PowerShow.com