Skip to content

Dieman89/chatApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Stargazers Issues MIT License LinkedIn


Logo

Chat Application

An application realised for an university project.
Explore the docs »

View Demo · Report Bug · Request Feature

About The Project

This application implements a networked distributed system for a group-based peer to peer communication, which conforms with the following requirements

Features and Logic

All members know of all other members. When a new member joins (connects), he/she has to provide following parameters as an input:

  1. A nickname (ensuring that each member has an unique nickname)
  2. a port it will listen to, its IP number and
  3. a port and IP number of one of the existing members
  • If a member is the first one, the member has to be informed about it at start-up. Then this member will become the administrator.
  • The new member(s) will then contact the existing members and the existing members will tell the new member(s) everyone's nickname, IP addresses and ports - including - the IP address, port and nickname of the current group admin.
  • After this, the new member will contact everyone to let them know that they can add it to the set of members.
  • In case some of the members do not respond, it will inform all the other members about this, and the other members can update their list of existing members.
  • If the admin does not respond, then a new member must be assigned as administrator.
  • The administrator maintains state of group members by checking periodically how many of them are online and informs active members about it so that they can update their state of members.
  • Any member can quit by a simple CTRL+C command.

Programming Principles and Practices

This project demonstrate the following programming principles and practices:

  • Group formation, connection and communication: A group is correctly formed connecting with all members where all members can communicate without any error.
  • Group state maintenance: The state of the group is maintened correctly. This includes recording of the messages exchanged among members of the group with timestamps.
  • Administrator selection: Automatically choose the administrator even when the existing one is disrupted/disconnected abnormally.
  • Use of design patterns: Adequate use of various design patterns in the implementation of the project.
  • Fault tolerance: Adequate strategy implementation for the fault tolerance. In particular, when a member or admin terminates abnormally.
  • JUnit based testing of the application: testing for the implementation of all of the main requirements.
  • Use of component-based development: Adequate design and development of components in the implementation.

Built With

License

Distributed under the MIT License. See LICENSE for more information.

Contacts

Alessandro Buonerba @Dieman_ - a.buonerba@hotmail.com

Tommaso Bruno @Tommy__of - tommasobruno.in.uk@gmail.com

Project Link: https://github.com/Dieman89/chatApp

About

Chat application with server and client.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages