Oh boy, this one brings me back. I can't tell you how many times I read this guide back in the day. Beej was the bomb when it came to network programming. Another great resource for network programming is <a href="http://www.madwizard.org/programming/tutorials/netcpp/" rel="nofollow">http://www.madwizard.org/programming/tutorials/netcpp/</a> which is aimed more at Windows users. Failing that, there's the classic Unix Network Programming Vol 1 and 2 which gives a good outline of what to expect.<p>As it turns out, there are some really subtle aspects of network programming and these guides tend to cover them well.
While we're sharing network programming guides, the Gaffer on Games guide on multiplayer networking is another great read <a href="http://gafferongames.com/networking-for-game-programmers/" rel="nofollow">http://gafferongames.com/networking-for-game-programmers/</a>
Haven't come across this before and it looks like a really valuable resource and since it's licensed under Creative Commons, I took the freedom to rehost it on IPFS here: <a href="https://ipfs.io/ipfs/QmeZJ6QQ4gztfrNDFHfBtBi4KGv6w87PcVKqqJKuM8UWiS/" rel="nofollow">https://ipfs.io/ipfs/QmeZJ6QQ4gztfrNDFHfBtBi4KGv6w87PcVKqqJK...</a><p>Another question for all the folks here at HN, is there more resources like this that would be considered as "definitive guide" as many mentioned, related to networking or distributed systems?
Comes up so often, we've practically run out of things to say about it.<p><a href="https://hn.algolia.com/?query=Beej's%20Guide%20to%20Network%20Programming&sort=byDate&dateRange=all&type=story&storyText=false&prefix&page=0" rel="nofollow">https://hn.algolia.com/?query=Beej's%20Guide%20to%20Network%...</a>
This is a very entertaining guide on socket programming that I came across about 10 years ago. An excerpt from the guide: Stream sockets are reliable two-way connected communication streams. If you output two items into the socket in the order "1, 2", they will arrive in the order "1, 2" at the opposite end. They will also be error-free. I'm so certain, in fact, they will be error-free, that I'm just going to put my fingers in my ears and chant la la la la if anyone tries to claim otherwise.<p>Last year, I decided to read the recently published newer version of this guide that describes how to write code that works for both IPv4 and IPv6.<p>An archive of examples and experimental code that I wrote while reading this book: <a href="https://github.com/susam/lab/tree/master/c/beej-guide-to-network-programming" rel="nofollow">https://github.com/susam/lab/tree/master/c/beej-guide-to-net...</a>
It's honestly kind of nice to have multiple sources treating the same material a different way. This, Stevens' <i>UNIX Network Programming,</i> and Kerrisk's <i>The Linux Programming Interface</i> are all a student should need to get started with socket programming.
I remember reading through the original version around my first year as an engineering student at Chico state around 2004. Only later did I realized that this guide that I learned so much from was hosted on the Chico State engineering servers! somehow I overlooked the URL. I followed the trail and realized that Beej was an alumni from Chico as well and had some sort of group (I forget the name). I emailed him to see if it was still active and he responded but alas it was not. They were responsible for rigging up the the soda machine in the computer science department to the network and I believe you could check the current stock levels of the different soda types.
I recall reading this start to end, twice, around 2009. I read it again a few years ago as it had been updated to include things like references to libevent.
This reminds me of my networking class!
I remember being provided Beej's Guide and it being indespensable. Still 8 years later when I need to verify something about networking I go look it up and make sure i am doing it right.
Brings back lots of memories - had it permanently open in my browser when I wrote a P2P file transfer / messenger app for a project about 10 years ago. Socket programming is so much fun :-)