/Prog3AT2-Four

Primary LanguageC#GNU General Public License v3.0GPL-3.0

Prog3 AT2 Question 4

This is a TAFE assignment for the Diploma in Software Development, at the South Metropolitan TAFE, Rockingham, Western Australia.

The project is to implement a Client/Server application that provides a Login facility that utilizes standard hashing techniques.

Implementation

To show a possible use-case, I have implemented an Echo Chat facility, where the server essentially echoes back what is sent to it. To use this facility, the user must first login.

This project consists of five sub-projects and uses the following 3rd party libraries:

Projects:

Third Party Libraries (as Nuget Packages):

Common Library

This is a non-executable jar, containing a collection of classes that are in 'common' use across multiple projects.

GUI Client

This application allows the user to perform the following functions:

  • Create a new account
  • Login to an existing account
  • Chat to the echo server (Socket Server)

MyNETCoreLib

This library project was copied from another of my projects: Prog3AT2-Two.

This is a Class Library that contains the BBST: AvlTree<T> and the ObservableAvlTree<T>.

MyWpfNETCoreLib

This library project was copied from another of my projects: Prog3AT2-Two.

This is a WPF Class Library that contains a helper console window: LogConsole and a supporting class: TextBlockOutputter. Together they provide a means to redirect the Console.Write{Line}() output to a window for easier debugging.

Socket Server

A lot of the initial code for this project was ported from another of my projects: Java3AT2-Four.

The functionality for the Server is a merging of that in the original two servers: RMIServer and SocketServer. To achieve this, it was necessary to develop a communications protocol, to handle the sequencing of commands and data.

This server application provides the following functionality:

  • Create new accounts
  • Validate login requests
  • Store user account details in a CSV file
    • Username
    • Password: hashed
  • Echo chat functionality.