UFPR · DELT · Contact
Programação Java
Esta aula aborda os seguintes conceitos:
  1. Multithread.
  2. Sockets.
Threads
Considere o seguinte código:
public class TesteThread implements Runnable { private static int cont=1; private int id; TesteThread() //construtor { id=cont; cont++; } public void run() { int i; for (i=0;i<10;i++) { System.out.printf("\nThread %d - %d",id, i); try { Thread.sleep(1000); // thread dorme por 1000 milisegundos } catch (InterruptedException e) { e.printStackTrace(); } } } } public class Teste { public static void main(String args[]) { Thread t; TesteThread th1; th1= new TesteThread(); t = new Thread(th1); t.start(); try { t.join(); } catch( Exception e) { System.out.println("Interrupted"); } } }

Com relação ao código acima, responda as seguintes perguntas:
  1. Compile e execute o código.
  2. Modifique o código para que o método main da classe teste crie 3 threads. Execute e observe o resultado.
  3. Procure na documentação da API Java porque foi possível chamar diretamente o método sleep da classe Thread.
  4. Procure na documentação da API Java porque é obrigatório o uso do try {...} catch {...} na chamada do método sleep da classe Thread. Romova o try {...} catch {...}, tente compilar e observe o resultado.
  5. Procure na documentação da API Java qual a função do método join utilizado na classe Teste.
  6. Re-escreva a classe TesteThread utilizando herança ao invés de usar a interface. Modifique a classe Teste para testar a sua implementação.

Programação Sockets
Considere os programas cliente-servidor disponíveis em http://www.eletrica.ufpr.br/TE253Programas/Sockets/.
  1. Compile e execute os programas EchoClient e EcoServer. Descreva o funcionamento das classes Socket e ServerSocket.
  2. Compile e execute os programas KnockKnockClient e KnockKnockServer. Descreva o funcionamento destes programas: quais métodos são utilizados para transmissão e recepção de mensagens?
  3. Compile e execute o programa KKMultiServer. Qual a diferença deste programa em relação ao KnockKnockServer?
  4. Modifique o programa KKMultiServer para responder à requisição de um cliente HTTP (browser), da seguinte forma:
    1. Não processe a requisição e sempre responda com uma mesma mensagem, formatada em da seguinte forma:
      HTTP/1.1 200 OK
      Date: Fri, 31 Dec 1999 23:59:59 GMT
      Content-Type: text/plain
      Content-Length: 8
      some-footer: some-value
      another-footer: another-value

      mensagem

      troque o Content-Type por text/html e envie uma mensagem HTML.
    2. Não processe a requisição e responda com uma mesma mensagem, formatada em HTML, informando o horário atual (dica. http://www.tutorialspoint.com/java/java_date_time.htm).
    3. Processe a requisição e responda com o arquivo correspondente (somente formato HTML)
Programa desenvolvido na aula de 24/06: http://www.eletrica.ufpr.br/pedroso/2016/TE091/Programas/java/TE091SSP.java - http://www.eletrica.ufpr.br/pedroso/2016/TE091/Programas/java/TE091SSPSERVER

Soluções
Soluções para os problemas propostos podem ser encontradas em http://www.eletrica.ufpr.br/pedroso/2016/TE091/Programas/java

Voltar para página da TE091