Simple Talk
Messaging App in C

Introduction
Using C and a modular design, I created a simple threaded messaging application over a local network using UDP sockets.
It was coded in a Linux environment to match the testing environment throughout the development process. It is important to note that this is a course assignment and I do not provide the source code or solution here in the interest of respecting the assignment, class and professors.
Testing
I conducted most of the testing in a virtual machine using Ubuntu 20.04 because the same environment would be used by the marking team.
As well, valgrind and gdb were easy to install straight into my virtual machine for testing rather than into my macOS which has compatibility issues with valgrind at the time of this writing. The majority of testing used localhost as the argument for whom to connect to simply because I already verified that my UDP socket was working with remote machines and it was faster to do everything from my own machine. Throughout the development process and once my application was near finished, I ran valgrind to find and eliminate memory leaks and track down errors which were all removed.

Role
This an individual project I did for my course on operating systems.
Though teaming up with another person was an option, I chose to do it individually to learn as much as I could from writing each piece of the application.
Project Outcomes
Using kernel level threads, I was able to create an application solving the critical section problem that is capable of piping data to output files on another remote machine.
As well, should a shutdown key be entered in one instance, it will shutdown as well as any remote machine it sends the exit key to. It was a great learning experience and really interesting to learn about good practices such as abstracting threads away from the main function for a clean modular design.