Ciência da Computação APS 5º Semestre
Por: Danilo E'Nicole • 30/11/2016 • Trabalho acadêmico • 3.419 Palavras (14 Páginas) • 1.140 Visualizações
2. INTRODUÇÃO
Este projeto tem como intuito proporcionar-nos o uso dos conhecimentos adquiridos na Universidade durante as aulas de Linguagem de Programação Orientadas à Objetos aliados aos conhecimentos adquiridos durante as pesquisas sobre a criação de uma aplicação para a comunicação em rede utilizando Java.
De início os integrantes do grupo realizaram pesquisar sobre qual seria a melhor opção de aplicação para desenvolver que atendesse aos requisitos do projeto proposto. Com base nas informações obtidas ficou decidido que o projeto seria desenvolver um chat para possibilitar a comunicação de acordo com o tema do trabalho.
Decidido então o alvo, os integrantes realizaram diversas pesquisas sobre o tema para encontrar qual melhor forma de atender as exigências necessárias e de forma que conseguíssemos entregar o projeto funcionando.
A maior dificuldade foi encontrar uma maneira que ficasse mais simples para que os integrantes do grupo pudessem assimilar melhor o conteúdo pesquisado e aplicá-lo na elaboração da programação do projeto. Foram consultados diversos materiais como artigos, livros, vídeo aulas, entre outros para podermos adquirir o suporte necessário para dar início ao projeto.
3. FUNDAMENTOS DA COMUNICAÇÃO DE DADOS EM REDE
Chat é um termo da língua inglesa que se pode traduzir como “bate-papo”. Apesar de o conceito ser estrangeiro, é bastante utilizada no nosso idioma para fazer referência a ferramenta que permite comunicar em tempo real através da internet ou de uma rede local, como no caso deste projeto.
Na prática quando um usuário escreve a mensagem e envia-la, o destinatário recebe-a no momento. Isso permite a troca de mensagens e informações de maneira rápida e fácil.
Para permitir que essa comunicação instantânea funcione de maneira que vários usuários se conectem a aplicação e possam realizar a troca de mensagens no chat, alguns conceitos deverão ser utilizados e aplicados como Thread e Socket , além da programação Orientada a Objetos.
3.1. Thread
Uma Thread pode ser considerada um fluxo de controle sequencial dentro de um programa, onde damos algum job e ela o realiza, provendo maior performance. Em programação é muito importante saber aplicar formas de processamento assíncrono, pois atualmente temos processadores altamente velozes e não sabemos explorá-los devidamente.
O chat que será desenvolvido neste projeto, a Thread será usada para controlar o fluxo de mensagens enviadas e recebidas por um cliente, pois se todas elas fossem armazenadas numa fila e processadas unicamente por uma thread o serviço seria precário e não atenderia as necessidades do projeto.
Nesse caso, há a necessidade de se fazer várias tarefas simultaneamente, ao mesmo tempo, paralelamente. Normalmente essa tarefa fica voltada ao Sistema Operacional , mas se tratando dessa situação dentro de uma aplicação (um processo), que quisermos executar tarefas em paralelos, deveremos utilizar Threads.
Em Java, usamos a classe Thread do pacote Java.lang para criarmos as linhas de execução paralelas. A classe Thread recebe como argumento um objeto com o código que desejamos rodar. E, no método main, criamos os objetos e passamos para a classe Thread. O método star é responsável por iniciar a execução da Thread.
Para que o código compile e execute, é necessário criar um contrato entre as classes a serem executadas pela classe Thread. Esse contrato é feito pela interface Runnable. Devemos dizer que a classe é “executável” e que segue esse contrato. Na interface Runnable, há apenas um método chamado run. Basta implementá-lo e a classe Thread já saberá executar a classe.
3.2. Socket
Os sockets são compostos por um conjunto de primitivas do sistema operacional e foram originalmente desenvolvidas para o BSD Unix. Podem ser utilizados nos mais variados sistema operacionais com recursos de comunicação em rede, sendo suportados pela maioria das linguagens de programação. Sockets são suportados em Java desde o JDK 1.0, para sua utilização devemos fazer uso das classes contidas no pacote Java.net.
Uma aplicação que utiliza sockets normalmente é composta por uma parte servidora e diversos clientes. Um cliente solicita determinado serviço ao servidor, e ele processa a solicitação e devolve uma informação ao cliente. Muitos serviços podem ser disponibilizados numa mesma máquina, sendo então diferenciados não só pelo endereço IP, mas também por um número de porta.
Socket é um meio de comunicação usado para viabilizar a conexão cliente/servidor, onde um cliente informa o endereço de IP e a respectiva porta do servidor. Se este aceitar a conexão, ele irá criar um meio de comunicação com esse cliente. Logo, a combinação de Threads e Socket é perfeita para a implementação de um chat.
4. DESENVOLVIMENTO DO PROJETO
Inicialmente os integrantes do grupo debateram algumas idéias e foram definidos os tópicos que cada um deveria realizar a pesquisa. O grupo realizou uma pesquisa detalhada sobre conexões cliente/servidor em Java e com base nesses estudos sobre Threads e Sockets iniciou-se o desenvolvimento do projeto.
A proposta do projeto é apresentar duas aplicações Java, uma sendo o servidor e a outra o cliente do chat. A aplicação cliente pode ser executada por diversos usuários desde que, o servidor esteja rodando para gerenciar a troca das mensagens.
Para a conexão do cliente é necessário que o usuário escolha um nome para entrar no chat , não sendo necessário colocar o ip e a porta do servidor, exceto em casos específicos que necessitem apontar essas informações.
4.1. Servidor Chat
O servidor servirá como a unidade centralizadora de todas as conexões recebidas via socket e tera a responsabilidade de controlar e enviar as mensagens para todos os demais clientes conectados. Quando um cliente se conecta, ele mesmo cria uma thread para aquele cliente, ou seja, terá a sua respectiva Thread e o servidor fará a gestão disso.
A inicialização do servidor é indispensável para o correto funcionamento da aplicação, pois o cliente se conecta através de um ip e porta, no caso desta, localhost e porta 5000 para executar na mesma máquina para testes.
Caso o servidor não esteja executando, será rejeitada a conexão e o cliente não conseguirá conectar nem enviar mensagens.
4.2. Cliente Chat
O cliente servirá como tela de interação com o usuário do chat. Nela o usuário colocará seu nome, e em casos específicos, terá que colocar endereço ip e porta do servidor. Por padrão a aplicação conecta em localhost porta 5000.
...