r/cprogramming • u/codingking329 • 2d ago
HTTP Server In C
I just watched a yt video on low-level
Context: lately I have been learning the basics of how CPUs work, and since I like programming, I want to work on a project that will force me to learn the computer I am working with
my question is what do i need to know in C before I can start this project, I learnt C in the past before i just never built anything, my programming background is in python
Link to the YouTube video: https://youtu.be/97i2BAUw5Xc?si=aoAhmeGOKc6su5M_
2
u/ChickenSpaceProgram 2d ago
learn as you go; reference a manual or book as you try to build whatever you want to build when you get stuck.
2
u/71d1 2d ago
Depends on what you want this HTTP server to do, if you just want to serve a single file to a single connection, all you will want is to learn network programming. If you want to learn how to make a production HTTP server you'll need to learn RFC 2616, RFC 3875, Network programming, threads, mutexes, and conditional variables.
2
u/dariusbiggs 2d ago
You will need to get comfortable reading the RFC specifications and yow to understand them.
You will nees to learn about parsing text safely
You may need to learn about finite state automata
You will need to learn how to safely use memory
You should learn about defensive programming, trust nothing, verify and validate everything. This is the only one you should read up on before you start.
You should learn about writing tests, unit tests, and integration tests.
All of these can be learned as you go, and they are valuable learning experiences if you get them wrong.
2
u/zhivago 1d ago
http 0.9 is extremely simple.
Just learn about sockets.
1
u/Electrical_Hat_680 22h ago
Learn how to create the sockets in binary and assembly. Open(); Close();.
0
1
u/AdOnly69 2d ago
Please, don't watch (or at least take seriously) "Low Level" (author of the video you linked), he is a content maker, not a real programmer
3
u/alkavan 2d ago
I would suggest, before building an HTTP server, build a sockets server and client first: Beej's Guide to Network Programming is a great starting point, of course http server uses sockets so you can upgrade it later.
The nghttp2 project is great example how to build your http server.
Other than that, learning a programming language without using it a lot, is like not learning it at all. In programming there's a huge difference between theory and practice, but especially so in C.