UNIVERSIDADE MANDUME YA NDEMUFAYO
INSTITUTO SUPERIOR POLITÉCNICO DA HUÍLA
DEPARTAMENTO DE CIÊNCIAS DA COMPUTAÇÃO E INFORMÁTICA
Projecto de Sistemas Distribuídos e Paralelos
Chat Multiusuários Com Socket Em Java
Huíla - Lubango
Junho, 2019
Departamento de Ciências da Computação e Informática
Instituto Superior Politécnico da Huíla
Universidade Mandume Ya Ndemufayo
Chat multiusuários com Socket
Em Java
Trabalho realizado para a disciplina de
Sistemas Distribuídos e Paralelos
No âmbito da
Licenciatura de Engenharia Informática
Elaborado por:
Acácio do Rosário Ndaamenwa Kaitungwa
Maria dos Anjos Filipe
Rubem Ronaldo Pessela
O DOCENTE
__________________________
Edson Livongue, MSC
Junho de 2019
Índice
Resumo ................................................................................................................................. 1
Introdução ........................................................................................................................... 2
Objectivos......................................................................................................................... 2
O que é Socket ................................................................................................................ 2
POO ................................................................................................................................... 2
Implementação ................................................................................................................... 3
Conclusão............................................................................................................................. 6
RESUMO
No presente projecto, será criado/demonstrado como criar um Chat com Java.
Para isso será necessário usar e aplicar conceitos de Socket e Thread, além da
programação Orientado a Objetos.
No mesmo projecto, será demonstrado uma forma de construir um chat
multiusuários com socket e com interface Swing que torna possível que o cliente
envie uma mensagem para todos os demais clientes conectados ao servidor ou
enviar a mensagem de forma reservada, ou seja, o cliente seleciona um usuário
e envia a mensagem apenas para este selecionado.
É de salientar que: Esta é uma implementação possível e não será certamente
a única ou mesmo a mais adequada.
O desenvolvimento da aplicação e da interface gráfica será/foi realizada na IDE
Netbeans na sua versão 8.2.
1
INTRODUÇÃO
Objectivos
Criar/Desenvolver um/uma chat/aplicação em JAVA com uso de Sockets em que
seja possível a troca de mensagens entre usuários.
O que é Socket
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
implementação de um chat.
POO
Frente a quantidade de linguagens orientadas a objetos (OO) existentes, como
C#, C++, Java, entre outras, fica evidente que para dominá-las é necessário
entender bem os pilares OO, como Herança (por interface e por classe),
Encapsulamento, Polimorfismo e Abstração. Neste artigo nos depararemos com
Herança por interface e classe base, abstração e encapsulamento, mas não será
o foco do mesmo abordar seus conceitos.
2
IMPLEMENTAÇÃO
O presente projecto, será desenvolvido em duas aplicações, uma trabalhando
com servidor e outra como cliente(s), A seguir são descritas as
responsabilidades e comportamentos das aplicações (ChatCliente e
ChatServidor) usadas para a construção e a comunicação do Chat:
Responsabilidade e comportamentos do ChatServidor: o servidor servirá
como unidade centralizadora de todas as conexões recebidas via socket
e terá como responsabilidade o envio de uma mensagem (recebida de
um cliente) para todos os demais conectados no servidor. Quando um
cliente se conecta a ele o mesmo cria uma Thread para aquele cliente, ou
seja, cada conexão terá sua respectiva Thread e o servidor fará a gestão
disso;
Responsabilidade e comportamentos do ChatCliente: Cada usuário criará
uma instância do cliente e fará uma conexão com o servidor socket. O
cliente deverá informar o endereço do server socket e a respectiva porta,
por isso é necessário executar o ChatServidor antes.
Para o caso, escolhemos uma porta que não está sendo usada pelo firewall ou
que algum antivírus não esteja bloqueando para a execução do server socket. E
para tal, escolhemos a porta 5000 em nossa máquina local.
O mesmo chat pode ser usado de duas maneiras:
A aplicação pode estar em mais de uma máquina, podendo as mesmas
conversarem se os computadores envolvidos estiverem conectados na
mesma rede, rede esta do tipo ponto a ponto), para tal deverão usar um
número de IP específico e informar a devida porta (5000). E é sempre o
ChatServidor que deve ser executado em primeiro lugar, e executar
quantas vezes a aplicação ChatCliente para atingir um número desejado
de utilizadores.
A aplicação pode estar em apenas uma máquina, para o efeito deverá ser
informado o IP da máquina local (localhost) e a devida porta. E para a
mesma, também é o servidor que deve ser executado em primeiro lugar,
e executar quantas vezes a aplicação Cliente para atingir um número
desejado de utilizadores.
3
Após executar as aplicações será exibida a tela seguinte:
Figura 1 – Tela principal onde será informado o nome, IP e a porta que o Cliente que se conecta.
Tela essa onde será informado o nome do usuário que está a logar na aplicação
e em seguida terá acesso as demais funcionalidades da aplicação,
funcionalidades estas do tipo:
Enviar mensagens e receber mensagens;
Sair do Chat;
Sair da aplicação;
Figura 2 – Informações disponíveis depois de informar o nome;
As mensagens trocadas são apresentadas na interface e armazenadas em um dado
banco de dados.
A seguir são mostradas as mensagens armazenadas. Tanto na aplicação e como no
banco de dados.
4
Figura 3 – Mensagens registrada na interface da aplicação durante uma conversa.
Nota: De salientar que a mesma aplicação conta com um banco de dados, ou
seja, as informações são salvas/registradas conforme mostra a figura 4..
Figura 4 – Mensagens registrada no banco de dados durante uma conversa.
5
CONCLUSÃO
Contudo, é de salientar que todos os objectivos previamente estabelecidos
foram alcançados, e foi possível fazer a devida demonstração de como funciona
realmente uma aplicação com Socket em Java em que é o servidor que se
mantém responsável em garantir a comunicação entre os usuários do Chat.