[HN Gopher] Show HN: A little web server in C
       ___________________________________________________________________
        
       Show HN: A little web server in C
        
       A little web server written in C for Linux.  Supports: CGI, Reverse
       Proxy.  Single threaded using I/O multiplexing (select).
        
       Author : robdelacruz
       Score  : 45 points
       Date   : 2023-05-16 19:37 UTC (3 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | mazidodo wrote:
       | [flagged]
        
         | whartung wrote:
         | I dunno. I haven't written a multiplexing I/O server. I haven't
         | written a CGI forking process. I haven't written a reverse
         | proxy handler. Heck, I haven't written C in years.
         | 
         | All sorts of reason why someone might want to write one of
         | these. There's even a bunch of free tools to help test it (and
         | who doesn't like free tests!).
         | 
         | Until you put fingers to keyboard, you just don't know, it's
         | all book learnin'.
        
           | tmountain wrote:
           | Good for you. Great way to learn!
        
       | skulk wrote:
       | Cool project, but this project demonstrates the reason I've
       | stopped writing things in C. The standard library has garbage
       | string functions and it seems every project has its own version
       | of this file:
       | 
       | https://github.com/robdelacruz/lkwebserver/blob/main/lkstrin...
       | 
       | It's fun to write this (and read others' versions) the first 3 or
       | 4 times, but it gets old quickly.
        
         | xmonkee wrote:
         | I have the same issue, but I blame the absence of good package
         | management. If it had that, one of the thousands of these
         | libraries would have won out and become quasi-standard.
        
       | lionkor wrote:
       | Shameless plug for when I attempted something similar, though
       | multithreaded with pthreads: https://github.com/lionkor/http
        
       | sgloutnikov wrote:
       | Here's also althttpd [0]. Heard Richard Hipp mention it and
       | fossil in an interview.
       | 
       | [0] https://sqlite.org/althttpd/doc/trunk/althttpd.md
        
       | samtho wrote:
       | This may sound sort of "old man waves at cloud" of me but one
       | thing I've found sad is the gross over-complication of later
       | versions of standards such that the sort of project linked here
       | may not be as practical for something like HTTP/3 for example.
       | Similarly, the large, muddled tool chain that is "required" to
       | make modern JavaScript applications makes it hard for newer
       | learners to really understand what is going on because the
       | minimal code version still needs its own transpiler, build
       | system, linter, process managers, etc. Maybe we need all this
       | complexity, but I suspect that some of the overzealous, solve-
       | everything systems design we have come accustomed to is mainly
       | serving to create a larger problem set instead of creating
       | elegant abstractions that are agreed upon.
        
         | skaushik92 wrote:
         | I see what you're saying and agree that HTTP3 is complicated
         | but I would that since it's a backwards compatible standard,
         | the added complexities are completely optional. For most use
         | cases the basic protocol is perfectly suitable and only as the
         | scale evolves does it require the additional complexity.
        
           | samtho wrote:
           | I understand what you're saying, but if someone decides to
           | post a link to their project that is an HTTP/3 server in
           | under X lines of code but only implements HTTP/2 features, is
           | it really an HTTP/3 web server?
        
       | rahmeero wrote:
       | Interesting. Would be good to get more info, beyond having to
       | read the code.
       | 
       | Curious to know how it compares to micro_httpd [1] which is about
       | 200 lines of C. Or others like thttpd and tiny_httpd.
       | 
       | [1] https://acme.com/software/thttpd/benchmarks.html
        
       | qwertywert_ wrote:
       | The amount of written functions/libs for opening c sockets has to
       | be in the 100,000s at this point. And they are all slightly
       | different.
        
       | forgotmypw17 wrote:
       | Thank you so much for sharing this!
       | 
       | This is exactly the type of web server I'm looking for my
       | project.
        
       ___________________________________________________________________
       (page generated 2023-05-16 23:00 UTC)