- Binding port and server listening in C
- Creating handler and routing via http_handler func and if else
- Responding http response with it's parts (status line, headers, body)
- Extracting URL (routing) and http verbs discovering
- Response body and gzip'in it
- Read headers and common header like user-agent, host, etc
- Support concurrent connection (multithreading)
- Serve file in dir (web-server likely)
- Save/write file in dir
- Stream file via fopen
- Content Encoding header, compression (gzip/zlib)
- Clean code (refactoring) -- to much buch copy/paste -- more modular
- More dynamic size buffers and static types (it is hard to implement growable data structure in C? idk...)
This is a starting point for C solutions to the "Build Your Own HTTP server" Challenge.
HTTP is the protocol that powers the web. In this challenge, you'll build a HTTP/1.1 server that is capable of serving multiple clients.
Along the way you'll learn about TCP servers, HTTP request syntax, and more.
Note: If you're viewing this repo on GitHub, head over to codecrafters.io to try the challenge.
The entry point for your HTTP server implementation is in app/server.c
. Study
and uncomment the relevant code, and push your changes to pass the first stage:
git add .
git commit -m "pass 1st stage" # any msg
git push origin master
Time to move on to the next stage!
Note: This section is for stages 2 and beyond.
- Ensure you have
gcc
installed locally - Run
./your_server.sh
to run your program, which is implemented inapp/server.c
. - Commit your changes and run
git push origin master
to submit your solution to CodeCrafters. Test output will be streamed to your terminal.