380 likes | 488 Views
Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich E-mail: paulovic@icmc.usp.br Monitor PAE: Ricardo Ramos de Oliveira E-mail: ricardoramos@icmc.usp.br 22 de Novembro de 2010 Universidade de São Paulo. ROTEIRO. 1. Conceitos Básicos sobre Redes. 2.
E N D
Programação Orientada a Objetos – SCC0204 Prof.: Fernando V. Paulovich E-mail: paulovic@icmc.usp.br Monitor PAE: Ricardo Ramos de Oliveira E-mail: ricardoramos@icmc.usp.br 22 de Novembro de 2010 Universidade de São Paulo
ROTEIRO 1 Conceitos Básicos sobre Redes 2 Programação Cliente-Servidor 3 Servidor e cliente de instâncias de classes 4 Aplicativo Tic Tac Toe Game
ROTEIRO 1 Conceitos Básicos sobre Redes 2 Programação Cliente-Servidor 3 Servidor e cliente de instâncias de classes 4 Aplicativo Tic Tac Toe Game
Conceitos Básicos sobre Redes 1 • Servidor → é o computador que contém a aplicação que desejamos executar via remota. • Serviço → é uma aplicação sendo executada no servidor. É comum usar os termos “serviço” e “servidor” para designar a aplicação a ser executada (ex. servidor de FTP).
Conceitos Básicos sobre Redes 1 • Cliente →é a aplicação remota que fará a comunicação e interação com o serviço/servidor. • Endereço → é a informação da localização de um computador em uma rede local ou na • Internet. • Porta → é um endereço local em um computador conectado a uma rede, identificado por um número único.
Conceitos Básicos sobre Redes 1 • Protocolo → Padrão de comunicação estabelecido entre cliente e servidor. • Socket → é o canal de comunicações para o envio e recebimento de informações entre cliente e servidor.
ROTEIRO 1 Conceitos Básicos sobre Redes 2 Programação Cliente-Servidor 3 Servidor e cliente de instâncias de classes 4 Aplicativo Tic Tac Toe Game
Programação Cliente-Servidor 2 • Uma aplicação cliente-servidor em Java segue um padrão simples de desenvolvimento • Imaginemos uma aplicação onde o cliente deva recuperar uma linha de texto enviada pelo servidor (a linha de texto pode conter a hora local, uma cotação de moeda, etc.).
Programação Cliente-Servidor 2 • O algoritmo do cliente e do servidor para leitura e processamento de uma String.
Programação Cliente-Servidor 2 • O primeiro passo do algoritmo (a criação de uma conexão) é feita pela criação de uma instância da classe Socket. • Podemos obter uma stream de entrada a partir da instância de Socket (usando o método getInputStream). • Solicitamos a leitura, e o servidor criará esta string para ser enviada quando for requisitado, imprimimos a string lida e fechamos a stream e a conexão.
Programação Cliente-Servidor 2 • Exemplo O serviço daytime é registrado na porta 13 e retorna, quando conectado e solicitado, uma string contendo a data e hora do servidor. O protocolo de comunicação com um servidor destes é, então, muito simples: basta estabelecer a conexão, ler uma única string e encerrar a conexão.
Programação Cliente-Servidor 2 • Esta classe implementa um cliente simples para o serviço daytime (porta 13).
Programação Cliente-Servidor 2 • Esta classe implementa um servidor para o serviço daytime (porta 13).
Programação Cliente-Servidor 2 • Exercicio De acordo com a classe ServidorDeDaytime.java do slide anterior implemente o método processaConexão(), compile e execute o código do Servidor em seguida compile e execute o código da classe ClienteDeDaytime.java.
ROTEIRO 1 Conceitos Básicos sobre Redes Programação Cliente-Servidor 2 3 Servidor e cliente de instâncias de classes 4 Aplicativo Tic Tac Toe Game
Servidor e cliente de instâncias de classes 3 • Como podemos escrever um servidor para servir instâncias de classes em Java? • O cliente também deverá ser capaz de receber do servidor estas instâncias. • Vamos usar a classe Livro para criar as instâncias que serão enviadas.
Servidor e cliente de instâncias de classes 3 • Classe Livro
Servidor e cliente de instâncias de classes 3 • O protocolo de comunicação entre o servidor e o cliente de instâncias da classe Livro está mostrado na abaixo.
Servidor e cliente de instâncias de classes 3 ServidorDeLivros.java
Servidor e cliente de instâncias de classes 3 Continuação... método processaConexão() da classe ServidorDeLivros.java.
Servidor e cliente de instâncias de classes 3 ClienteDeLivros.java
Servidor e cliente de instâncias de classes 3 • Ao invés de usar uma instância de BufferedReader para “ler” dados do servidor, iremos usar uma instância de ObjectInputStream. • Existe uma outra diferença entre este cliente e outros: este deve, obrigatoriamente, ter um bloco catch para processar a exceção ClassNotFoundException, que será criada caso a classe cuja instância desejamos recuperar não existir do lado do cliente.
ROTEIRO 1 Conceitos Básicos sobre Redes Programação Cliente-Servidor 2 Servidor e cliente de instância de classes 3 4 Aplicativo Tic Tac Toe Game
Aplicativo Tic Tac Toe Game 4 • O aplicativo do jogo Tic Tac Toe ou Jogo da velha como é conhecido popularmente será desenvolvido utilizando um servidor e vários clientes conectados simultaneamente, cada cliente tem a sua vez de interagir com o servidor. Os clientes são dependentes. • Este aplicativo ilustra o papel de um servidor como mediador em um jogo. • O jogo-da-velha é um bom exemplo: dois jogadores, através dos seus clientes,se conectam com o servidor, e um depois do outro, enviam comandos para este.
Aplicativo Tic Tac Toe Game 4 • Além de receber e processar os movimentos feitos pelos clientes, o servidor é responsável por analisar estes movimentos: • - Verificar se eles são válidos, • - informar os jogadores dos movimentos de ambos • - determinar quando o jogo tiver um vencedor • - Encerrar as conexões com os clientes
Aplicativo Tic Tac Toe Game 4 • O protocolo de interação entre os clientes e o servidor é mostrado na Figura.
Aplicativo Tic Tac Toe Game 4 • Classe ServidorDeJogoDaVelha.java
Aplicativo Tic Tac Toe Game 4 • Método main()
Aplicativo Tic Tac Toe Game 4 • Fim do método main()
Aplicativo Tic Tac Toe Game 4 • Método processaJogo()
Aplicativo Tic Tac Toe Game 4 • Continuação do método processaJogo()
Aplicativo Tic Tac Toe Game 4 • Fim do método processaJogo()
Aplicativo Tic Tac Toe Game 4 • Método mostraTabuleiro()
Aplicativo Tic Tac Toe Game 4 • Método verificaVencedor()
Aplicativo Tic Tac Toe Game 4 • Fim do método verificaVencedor()
Aplicativo Tic Tac Toe Game 4 • Fim do método enviaMensagem()
Aplicativo Tic Tac Toe Game 4 • Um exemplo de interação de um cliente (telnet) com o servidor de jogo-da-velha pode ser visto na Figura abaixo.