This is a Qt/C++ IM system that has multiple versions: TCP/Client-Server, UDP/Client-Server, TCP/P2P, and UDP/P2P
This was written while I was in college and could use some serious work to be reliably functional, but it was a good experiment to learn some of the basics of C++/Qt, networking, and threading.
In a perfect world, I'd rewrite some of this to have an actual architecture that wasn't just spaghetti-coded together late at night.