1 / 19

Infra-Estrutura de Comunicação (IF678)

Infra-Estrutura de Comunicação (IF678). Rafael Lucena Roberta Mota Rubens Lopes Rodolfo Santos João Pedro Cordeiro. Aula Prática 03 – 2011.2. CIn/UFPE. Agenda: Fazer o cliente/servidor da aula passada comunicar dois computadores diferentes. Programação Concorrente (Threads)

Download Presentation

Infra-Estrutura de Comunicação (IF678)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Infra-Estrutura de Comunicação(IF678) Rafael Lucena Roberta Mota Rubens Lopes Rodolfo Santos João Pedro Cordeiro Aula Prática 03 – 2011.2 CIn/UFPE

  2. Agenda: • Fazer o cliente/servidor da aula passada comunicar dois computadores diferentes. • Programação Concorrente (Threads) • Exercício Chat • Exercício Transferência de Arquivos • Exercício Web Server

  3. Programação Concorrente: • O termo programação concorrente é usado no sentido abrangente, para designar a programação paralela e a programação distribuída

  4. Objetivos da Programação Concorrente • Reduzir o tempo total de processamento • múltiplos processadores • Aumentar confiabilidade e disponibilidade • processadores distribuídos • Obter especialização de serviços • sistemas operacionais • simuladores • Implementar aplicações distribuídas • correio eletrônico

  5. Programação Concorrente Fluxo único de execução Vários fluxos de execução tarefa 1 tarefa 1 tarefa 2 tarefa 3 tarefa 2 tarefa 3 cada fluxo possui uma pilha de execução

  6. Thread • Éuma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente.

  7. Estados de uma Thread • Criação: Neste estado, o processo pai está criando a thread que é levada a fila de prontos; • Execução: Neste estado a thread está usando a CPU; • Pronto: Neste estado a thread avisa a CPU que pode entrar no estado de execução e entra na fila de prontos; • Bloqueado: Neste estado, por algum motivo, a CPU bloqueia a thread, geralmente enquanto aguarda algum dispositivo de I/O; • Término: Neste estado são desativados o contexto de hardware e a pilha é desalocada. • Esperando e Finalizado.

  8. Estados de uma Thread

  9. Principais métodos em Java • start(): inicia a execução da thread (método run) • suspend(): suspende a execução da thread que está executando • sleep(): faz a thread que está executando dormir por um tempo determinado • yield(): faz a thread que está executando dormir por um tempo indeterminado • resume(): resume a execução de uma thread suspensa • stop(): termina a execução de uma thread; a thread não pode ser mais executada.

  10. Principais métodos em Java • join(): método que espera o término da THREAD para qual foi enviada a mensagem para ser liberada. • interrupt(): método que interrompe a execução de uma THREAD. • interrupted(): método que testa se uma THREAD está ou não interrompida.

  11. Exemplo de threads Em java publicclass Conta {//... publicdouble saldo = 0; void creditar(doublevc) { saldo = saldo+vc; } void debitar(doublevd) { if(saldo>vd){ saldo = saldo-vd; } } }

  12. Exemplo de threads Em java publicclass Credito extends Thread { private Conta conta; privatedoubleval; public Credito(Conta c,double v) { conta = c; val = v; } publicvoidrun() { conta.creditar(val); } }

  13. Exemplo de threads Em java publicclass Debito extends Thread { private Conta conta; privatedoubleval; public Debito(Conta c, double v) { conta = c; val = v; } publicvoidrun() { conta.debitar(val); } }

  14. Exemplo de threads Em java public class Teste { public static void main(String[] args) { Conta c = new Conta(); c.saldo=12; Thread a = new Credito(c, 23.0); Thread b = new Debito(c, 12.0); a.start(); b.start(); System.out.println(c.saldo); } }

  15. Exercício 1 • Crie um chat 1 para 1 utilizando o protocolo TCP. Utilize threads para conseguir escutar e enviar mensagens ao mesmo tempo.

  16. Exercício 2 • Crie um programa que envie e receba um arquivo utilizando o protocolo TCP. Utilize threads para implementar esse programa. O comando para transferência de arquivos é representado por @. • Ex: • @ C:\Users\Rafael\Documents\Teste.txt • OBS: • Só precisa enviar um arquivo por vez. • Emita uma mensagem quando o envio for completo ou se acontecer algum erro.

  17. Exercício 3 • Junte os exercícios 1 e 2 para criar um chat 1 para 1 com transferência de arquivo. O comando para transferência de arquivos é representado por @. • Ex: • @ C:\Users\Rafael\Documents\Teste.txt OBS: • Só precisa enviar um arquivo por vez. • Emita uma mensagem quando o envio for completo ou se acontecer algum erro.

  18. Exercício 4 • 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 NotFound” • 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 www.cin.ufpe.br/~jpmc/comunicacao

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

More Related