DEV Community

Cover image for How I Built a Simple HTTP Server from Scratch using C

How I Built a Simple HTTP Server from Scratch using C

Jeffrey Yu on May 11, 2023

You might wonder how web servers "serve" files, and how they deliver files that piece together a website that shows on your screen. Well, knowing h...
Collapse
 
baduit profile image
Lena

That's not C++, that's C, it doesn't even compile with a C++ compiler (in the Github project it uses gcc instead of g++)
To make it a valid C++ code you just to change some implicit conversion, like for exemple when you use malloc :
int* fd = malloc(sizeof(int));
In C++ you need to explicitly cast it:
int* toto = static_cast<int*>(malloc(sizeof(int)));

To make it more idiomatic C++ you would need to:

Collapse
 
jeffreythecoder profile image
Jeffrey Yu • Edited

Thanks for the correction. I have no idea why I said C++ while I was using gcc - I was confusing it with another project I'm working on.

Collapse
 
baduit profile image
Lena

Don't worry it happens to everyone sometimes haha
I saw that you updated the title, don't forget to update the tag :)

Collapse
 
michael0309228 profile image
Michael

WHY the heck do we need theese far-fetched idioms and features just to make a simple action and write minimalistic code?

Collapse
 
baduit profile image
Lena

Far fetched? You can see them for example in the core guidelines and a lot of codebase using modern c++ recommend to use similar idioms.

These idioms are not here just because someone said so, but because they make the code safer and more maintainable.

Also, I never said they had to apply them, but the code would almost the same structure and without same it was C code, not C++. Turns out that the author meant C and not C++ and he corrected the article.

Collapse
 
adwaithrajesh profile image
Adwaith Rajesh

Thank you for your efforts in writing this post. I just have one suggestion though. Instead of converting the code to images and then posting them. you can wrap your code in code fences. i.e put you between three backticks(`) followed by the name of the language, and end it with three more backticks

```c
//  your code
```
Enter fullscreen mode Exit fullscreen mode

This allows the code to be copied directly from the post.
Other than that I liked your post.
Thank You.

Collapse
 
jeffreythecoder profile image
Jeffrey Yu

Hey Adwaith, thanks for the suggestion! I tried using code blocks but the long code blocks would make the post unreadable, and the syntax highlighting in pictures make code easier to read

Collapse
 
adwaithrajesh profile image
Adwaith Rajesh

I understand. Thanks for the post.. It was helpful.

Collapse
 
sgf4 profile image
Horu

i would use epoll_wait and non blocking sockets

Collapse
 
jeffreythecoder profile image
Jeffrey Yu

Good suggestion :)

Collapse
 
shuvamwebdesigner profile image
shuvamwebdesigner

I need full code can you please send me

Collapse
 
jeffreythecoder profile image
Jeffrey Yu
Collapse
 
fridaycandours profile image
Friday candour

Isn't the code slow because it's synchronous?