What have I gotten myself into?

This week has been about figuring out scope and design – so truly, defining what I’ve gotten myself into with this project. 🙂 It’s difficult to project how long something is going to take when you’ve never worked with it before, so I’ve given myself a list of milestones I expect to actually get through by the end of the quarter with some more complex stretch goals that I can get into if time permits.

Requirements

How does it work?

It will be a client and server pair – client GUI and server console application that supports multiple client connections. The server is started via the command line and will track connections with their associated handle. Within the client, a handle must be entered. The client initializes a connection with the server using their handle. If this handle is already in use, the server will reject the connection with notification and the client can reattempt connection with a different handle. When a client sends a message, it it received by the server and then broadcast back to all connected clients. At any time, a client can choose to disconnect and the server will be notified. If the client cannot connect to the server, an error is reported in the GUI.

Project Milestones

  • Environment setup
  • Project planning 
  • Mock up and build GUI
  • Console application server and client for testing
  • Connect client GUI to server
  • Server accepts multiple connections
  • Server broadcasts to all connected by handle/socket
  • Polish up GUI, more extensive final testing

Stretch Goals

  • User groups – specified upon connection and broadcast only to the group
  • Encryption

Research

Topic Link
Network Programming with Qt http://qt.apidoc.info/5.2.0/qtnetwork/qtnetwork-programming.html
UDP Broadcasting http://doc.qt.io/qt-5/qtnetwork-network-chat-example.html
WebSockets http://doc.qt.io/qt-5/qtwebsockets-simplechat-example.html
Qt TCP Server http://doc.qt.io/qt-5/qtcpserver.html
GUI example https://thesmithfam.org/blog/2009/07/09/example-qt-chat-program/
 C++ example https://www.codeproject.com/Articles/7785/Single-Server-With-Multiple-Clients-a-Simple-C-Imp
Qt and TCP tutorial http://www.gulon.co.uk/tutorials/qt-and-tcp/
 Multithreading http://www.bogotobogo.com/Qt/Qt5_QTcpServer_Multithreaded_Client_Server.php
 Asynchronous Client/QTcpServer http://www.bogotobogo.com/Qt/Qt5_QTcpServer_Client_Server.php
Console example http://www.bogotobogo.com/cplusplus/sockets_server_client_QT.php
 Qt Socket Application http://www.bearcave.com/software/qt_socket_example.html
 Qt C++ Basic Networking https://youtu.be/sZ0cdYEtsdk
 Qt Creator – QTcpSocket, QTcpServer https://youtu.be/Z9AAGn9gUoE
 Mini Instant Messenger project  http://ziyang.eecs.umich.edu/~lei/projects/mim/doc/mim.html

Leave a Reply

Your email address will not be published. Required fields are marked *