Very simple HTTP server & client

This project is intended as an example for those who want to learn how HTTP protocol works in both, client and server software, from the very basics to a more advanced handling.

You can find more about the author, this and other of his projects at Nestor Sabater’s Portfolio

It’s developed in C, keeping in mind the readability as priority.

The project is not production ready and can be improved in many ways, from better encapsulation to better security algorithms, but as mentioned, It aims to provide a starting point for those willing to learn.

This repository IS NOT using any 3rd party libraries, everything is made simple enought to work and be understandable

Image of Server Running


Easy server configuration

Use of a configuration file Server configuration

Realtime records

Colored connection records for testing and debugging Colore real time console


Two log files to record all server requests and errors Access log Error log

Project structure

How to use

To compile: gcc -o ../server/bin/mi_http server.c config_manager.c colors.h constants.h log_manager.c header_manager.c
To execute client: ./client [ip/host] [port] [file]
To execute server: ./server