[HN Gopher] About A comprehensive guide for Linux Network (Socke...
       ___________________________________________________________________
        
       About A comprehensive guide for Linux Network (Socket) programming
        
       Author : ncmv92
       Score  : 64 points
       Date   : 2025-01-19 12:13 UTC (10 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | ncmv92 wrote:
       | In my opinion, Linux network programming, especially socket
       | programming, isn't that difficult. However, learning this topic
       | on your own can be challenging because many online resources are
       | unclear, and sample codes often only cover the basics. You might
       | find yourself unsure of what to do next. That's why I created
       | this tutorial. It aims to give you clear guidelines and plenty of
       | examples to help you understand better.
        
         | AnonC wrote:
         | I skimmed through it and it looks good.
         | 
         | Since I didn't see this in the list of references, I have to
         | ask -- have you heard of the (famous) Beej's Guide to Network
         | Programming [1]? It's a classic (in the sense that it's been
         | around for a long, long time and goes into many more details)
         | on this topic.
         | 
         | [1]: https://beej.us/guide/bgnet/
        
           | butterandguns wrote:
           | Beej's was great for me when I was doing some socket
           | programming in C for my OS class in grad school. Classic and
           | invaluable resource.
        
           | ncmv92 wrote:
           | beej was also a great place to take the first steps in
           | network programming :) I just updated my reference list. This
           | is one of my missing piece. Thank you for the reminder.
        
           | jcul wrote:
           | Was just skimming the comments for a mention of Beej's guide,
           | was about to post almost the same comment.
           | 
           | What an amazing resource.
           | 
           | I feel like the last time I looked at it, it has been updated
           | too so was pretty current.
           | 
           | Also agree the OP looks like a good guide.
        
         | f1shy wrote:
         | Actually is extremely simple. I learned by looking the original
         | papers[0]
         | 
         | As you say, just lots of bad examples online. The only thing
         | that made me a little bit crazy at the beginning, was the fact
         | that TCP is a stream without delimiters, no packet concept.
         | Other than that, is not more difficult than writing and reading
         | a file.
         | 
         | [0] https://docs-
         | archive.freebsd.org/44doc/psd/20.ipctut/paper.p...
         | 
         | Another useful resource: https://beej.us/guide/bgnet/
         | 
         | Edit: beej seems already cited and beloved
        
           | nesarkvechnep wrote:
           | Thank you for referring to a BSD document. Most people have
           | no idea that the modern reference network stack
           | implementation comes from BSD and not Linux.
        
       | infocollector wrote:
       | Does anyone know - Is there a guide like this that does this with
       | Python instead of the C Socket API?
        
         | foresto wrote:
         | I don't know of one. However, Python's socket API is mostly a
         | thin wrapper around the C socket API. Assuming you know Python,
         | it should be easy enough to learn from a tutorial like this one
         | without a Python-specific guide. Note the matching function and
         | constant names:
         | 
         | https://docs.python.org/dev/library/socket.html#socket.socke...
        
         | saidinesh5 wrote:
         | How about this? https://realpython.com/python-sockets/
         | 
         | Seems to cover all the basics...
         | 
         | Typically,
         | 
         | 1) you just understand the workflow of your socket server and
         | client
         | 
         | 2) you then decide between TCP and UDP - and even if you want
         | to work at higher layers like http or rpc - for the application
         | you want to code
         | 
         | 3) start coding with the boiler plate code for something like
         | echo server and client.
        
       | Uptrenda wrote:
       | The guide looks well written and I can't see any major errors
       | (just skimmed it.) But some of the diagrams are potentially
       | misleading. E.g.
       | 
       | read <---- write
       | 
       | write ----> read
       | 
       | Implies that send/recv perfectly correlate to each other when
       | they can be split up in stream sockets. Your code addresses that
       | already with loops. So I know you know that. Just confusing
       | diagrams I guess.
        
       ___________________________________________________________________
       (page generated 2025-01-19 23:01 UTC)