• Project 1 - Number Guessing Server

    Develop a TCP/IP based server that implements a number guessing game. This assignment is an introduction to TCP/IP socket programming and connecting clients and servers together. You will only be responsible for the server side of things, you can use “telnet” for testing and validation. Additionally you can use telnet, a simple text-based client to interact with your server.

  • Project 2 - HTTP Server

    Create your own simple HTTP (web) server. Your server must allow (serve) files and subdirectories from a “document root” folder over a TCP port to HTTP clients (web browsers). Both the document root and TCP port must be configurable via command line parameters or a configuration file. Your server must be able to serve concurrent (simultaneous) requests as well as multiple requests over time.

  • Project 3 and 4 - MQTT Server

    For the next two projects we will be creating a lightweight, stripped down, and eventually distributed MQTT v3.1.1 compatible service. The project is broken into two parts; implementing the standalone server and then extending to a distributed system with your classmates. The first part has documented protocols to implement, the second we will design in-class and online together.

  • Project 4 - Distributed MQTT Server

    For this project, instead of writing code, you will design how to extend your broker from Project 3 as a distributed system. That is, your broker should be able to connect to other brokers to manage a large number of clients. Your broker should still maintain compatibility with MQTT v3.1.1, so any suggested changes must not break existing clients and brokers.