22 ms·
Beej's Guide to Network Programming (1994-2020)
- vasergen 6y agoin case somebody is interested in offline version, there are pdf versions as well https://beej.us/guide/bgnet/ https://beej.us/guide/bgnet/
- fctorial 6y agoTitle should mention it's about linux.
- petee 6y agoWell, anything that'll run gcc. He does include a section for Windows programming for the brave - - https://beej.us/guide/bgnet/html/#windows https://beej.us/guide/bgnet/html/#windows
- joelwilliamson 6y agoIt's useful for any Unix that has BSD sockets, not just Linux.
- macksd 6y agoEven though some of the API specifics change, the BSD sockets API has been widely copied. It's a pretty decent introduction to the concepts in general.
- deleted 6y ago[deleted]
- mbag 6y agoGlad to see this is being updated. I have used Beej's Guide to learn network programming back in 2013 or 2014, and it was such a great resource.
- deleted 6y ago[deleted]
- kebman 6y ago“Some of you might want to do things the Pure Windows Way. That’s very gutsy of you, and this is what you have to do: run out and get Unix immediately!” He's just joking of course. At first glance this seems like a great read. And he's funny too! :) I do wonder how much of this is applicable to Rust though.
- kruxigt 6y ago"At first glance this seems like a great read" Agree!
- hoseja 6y agoSadly the Windows asynchronous (or something, I never quite got it) networking API seems very powerful. But I never found a comprehensible manual/tutorial for it.
- whizzter 6y agoDr.Dobbs has had at least 2 articles on it. https://www.drdobbs.com/open-source/io-multiplexing-scalable-socket-servers/184405553 https://www.drdobbs.com/open-source/io-multiplexing-scalable... (Also covers select and /dev/poll but lacks epoll,kqueue) https://www.drdobbs.com/cpp/multithreaded-asynchronous-io-io-comple/201202921 https://www.drdobbs.com/cpp/multithreaded-asynchronous-io-io... I remember chatting in the fringes when nodeJS was doing their proper win32 porting and they did have some issues getting things stable due to lack of documentation but iirc got some help from MS so the libuv code should be usable as a reference for behaviours (As well as being fairly battle tested by now). https://github.com/libuv/libuv/tree/v1.x/src/win https://github.com/libuv/libuv/tree/v1.x/src/win
- the_only_law 6y agoI’ve been trying to figure out the entire windows networking stack recently, particularly some more obscure parts and the docs have been pretty bad unfortunately. A lot of the higher level stuff fees really superficial and the lower level stuff it’s it own mess (all sorts of broken links and links to outdated versions in the NDIS docs).
- yakubin 6y agoSocket programming never clicked for me before I learned about the protocols themselves first. My brain just rejected using an API for something I didn't understand. So if you're like me, I highly recommend reading Comer's "Internetworking with TCP/IP" first, and sitting down to socket programming later.
- frr149 6y agoThat's three volumes... Anything shorter you can recommend?
- great_wubwub 6y agoYou really only need the first one.
- gnfargbl 6y agoVolume 1 of TCP/IP Illustrated by W. Richard Stevens is a good one. If you're very pressed for time, start with the picture of the TCP state machine and work outwards.
- astrobe_ 6y agoMaybe it's just me but it took a long time before I found another "big" API as horrible as BSD sockets is. Well, some APIs are not meant to be used directly, but hidden behind a class or more application-specific functions.
- jandrese 6y agoMaybe, but in C land that high level socket API never materialized in the standard library. And you are right that it is awful. I've been doing network programming for over 20 years now and I still have to look up the manual when making a TCP/UDP connection in C. I've made my own wrapper a few times but often don't get to use it for various reasons. int tcp_connect(char* remote_host, short int port, options* options, static char** error_string); int tcp_listen(short int port, options* options, static char** error_string); int udp_listen(short int port, options* options, static char** error_string); Does any necessary lookups for you and connects sets up the socket. The options structure can be NULL if you want the sane defaults, or you can zero it out and set only the options you care about like the connect timeout or flags like SO_REUSEADDR or O_NONBLOCK. Returns the socket number or -1 if an error occurs. In the event of an error the error_string is also set. The _listen variants spit out a socket ready for an accept() call. If you need something weird then you're back to the low level BSD socket stuff, but this covers about 95% of my use cases. While it's only saving a handful of system calls, it ends up being quite a bit of boilerplate and error handling. Especially if you specify a connect timeout, since that is kind of awkward to do with the BSD socket API.
- dirkf 6y agoCan confirm this is a nice introduction to network programming; it's how I got started. Once you know the basics you can switch to the man pages for more details.
- teleforce 6y agoIf I remember correctly this network programming tutorial has been around for more than 20 years now, how times flies! If you want a cross platform network programming guide in C, Lewis Van Winkle has written an excellent reference book[1]. [1]https://www.amazon.com/Hands-Network-Programming-programming-optimized/dp/1789349869 https://www.amazon.com/Hands-Network-Programming-programming...
- justin66 6y agoIf that book is as good as you say, it's a pity he published with Packt. Their stuff is typically very bad.
- mrozbarry 6y agoAgreed. I published a video course through Packt and the whole experience was absolutely awful.
- netule 6y agoI began writing a book for them in 2010 and quit when the goalposts kept being moved and had a different point of contact every week. Absolutely terrible experience.
- mrozbarry 6y agoSimilar experience. In my case, they wanted a video course on a library that wasn't finalized or published, and was still in an obvious beta with frequent breaking changes. On top of that, I was in a 12hr timezone difference, and only wanted to communicate with me regularly at 11/12 at night on week days, which didn't work well. Oh, and they only wanted to use skype, an app I never use normally. I was promised promo codes and release on multiple websites, and I got a single weekend promo code, and only published on two websites. And the icing on the cake is now 100% of the people I worked with don't work at Packt any more, so I don't even have a person I can contact any more to work on promotions or updates.
- LeonM 6y agoBack in 2010 I had my first embedded programming job. I needed to do some network programming in C (controlling a PLC over ethernet). My boss at the time told me "just read Beej's guide and you'll be fine". He was right. That system is running 24/7 since then. Good to see that the guide is still being updated. edit: typo
- KuiN 6y agoSame here, my first job out of university was network programming on embedded Linux and Beej's guide was an invaluable resource.
- ravingraven 6y agoAre you guys me? Exact same story. Network programming on embedded systems. Beej to the rescue.
- friend-monoid 6y agoSame here. That book and the Linux api book are just invaluable resources.
- vymague 6y agoWhich linux api book?
- friend-monoid 6y agoThe linux programming interface by Michael Kerrisk. It’s incredibly good.
- renerthr 6y agoI only found this: https://man7.org/tlpi/ https://man7.org/tlpi/ Is there any free or low-cost version?
- indigochill 6y agoThis guide saved my butt in school when I suddenly had to do C network programming with no relevant experience.
- julianh95 6y agoI share the same experience as I am currently taking CS6200 at Georgia Tech.
- indigochill 6y agoHaha, that was the exact class where I used it! Loved that class, though. By far my favorite in their MS program. It awakened a love for operating systems (and the general applicability of the concepts). AOS was also good and made me appreciate the point of cloud computing more.
- tumblewit 6y agoGeorgia Tech's Graduate Introduction to Operating systems OMSCS class rings a bell. Socket programming was fun in that class. And by fun I mean hours of hair pulling while debugging.
- person_of_color 6y agoWas OMSCS worth it?
- wackspurt 6y agoMy latest immersion into Beej's guide was through the GIOS course too! It also opened my eyes to the amount of familiarity/expertise my older co-workers had with systems programming (they helped me when when they heard me whining about the socket programming assignment). It taught me not to dismiss someone just because they don't know the latest TensorFlow API/Neurips paper.
- gspr 6y agoI had the most wonderful déjà vu the other day. I needed to do some serious-ish network programming for the first time in 20 years. I googled around a bit for a refresher. What do I find? Beej's guide – the same Beej's guide that was my first introduction to the topic 20 years prior! It was wonderfully poetic to me that the same document that taught me how to make a wildly dangerous IRC bot in my teenage room for the lulz also re-taught me the stuff I needed to deliver a low-latency ML offloading demo at my serious(-ish) job 20 years later. Gave me a real warm fuzzy feeling :-) PS: HN disucssion anno 2015: https://news.ycombinator.com/item?id=9445692 https://news.ycombinator.com/item?id=9445692 Anno 2017: https://news.ycombinator.com/item?id=13983212 https://news.ycombinator.com/item?id=13983212
- gspr 6y agoI thought I'd add: I know that this is a very normal thing in some sense. Many textbooks remain relevant for decades and decades (I'm a mathematician, we know this perhaps better than most). But still, it's rarely the case for an online document – one about computer technology even more so!
- toast0 6y ago> It was wonderfully poetic to me that the same document that taught me how to make a wildly dangerous IRC bot in my teenage room for the lulz also re-taught me the stuff I needed to deliver a low-latency ML offloading demo at my serious(-ish) job 20 years later. Gave me a real warm fuzzy feeling :-) My experience with CTCP flooding large channels channels and causing netsplits in my youth provided a perfect base of understanding for when my production servers started flooding status updates to each other and couldn't stay connected. PS sorry, undernet admins and users. Also, thanks to the admin on #quebec who asked me to flood his channel so he could tune his bot to block flooders.
- easytiger 6y agoPretty much learned c via this back in the day. It feels like it was in the 90s, but might have been early 2000s edit: it was the 90s
- zubspace 6y agoHow do you handle servers, which need to be accessible by desktop, mobile and web application? Can I use those low level API's or do you know some server/client libraries which simplify this for UDP and TCP channels?
- ColinWright 6y agoYour question is insufficiently specific ... it could mean nearly anything. You need to be clearer about what equipment you have, and what you're trying to accomplish. As it stands, I don't think anyone can answer except it a completely generic way: Almost every system has libraries to help, but it depends on what you're running on, what you're running over, and what you're trying to do.
- TheCoelacanth 6y agoThat is covered[1], though it is outdated if you want it to be able to handle as many connections as possible in a fast way. There are also thousands of higher-level libraries that would let you avoid having to deal with these lower-level APIs directly. [1] https://beej.us/guide/bgnet/html/#poll https://beej.us/guide/bgnet/html/#poll
- sdwr 6y agoIf you're serving webpages, look for a networking library that handles HTTP. If you're sending arbitrary chunks of data (like for a game), use a socket library. I've used WebSockets in the past, which handles the low-level stuff under the hood. There are libraries that implement it for Java, Go, C++, JS, etc. Check it out at https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_... It's not totally headache-free though - some issues I ran into were: - running locally vs over the internet - data formatting - recovering from timeouts/dropped connections
- majke 6y agoI attempted to write something for more advanced audience. Not sure if it's a successful attempt though... https://idea.popcount.org/2019-11-06-creating-sockets/ https://idea.popcount.org/2019-11-06-creating-sockets/ https://idea.popcount.org/2019-12-06-addressing/ https://idea.popcount.org/2019-12-06-addressing/
- riffraff 6y agoI remember many years ago learning how to use select() with this guide and then use it to speed up some scanning tool I had found on the internet. It felt incredible that _I_ could do that as someone who had just started programming. Thank you Beej.
- billfruit 6y agoGood guide to socket programming. Does it cover sctp? And more importantly is sctp support part of Kernel/glibc presently?
- jcrubino 6y agosctp only be came widely available after websockets and I think due to data channel implementations in WebRTC.
- ColinWright 6y agohttps://www.google.com/search?q=site%3Abeej.us+sctp https://www.google.com/search?q=site%3Abeej.us+sctp > Your search - site:beej.us sctp - did not match any documents. In contrast: https://www.google.com/search?q=site%3Abeej.us+udp https://www.google.com/search?q=site%3Abeej.us+udp > About 9 results (0.25 seconds) So I'd guess that the guide doesn't cover sctp. ======== Then: https://duckduckgo.com/?q=is+sctp+support+part+of+Kernel%2Fglibc https://duckduckgo.com/?q=is+sctp+support+part+of+Kernel%2Fg... Returns: > https://www.kernel.org/doc/html/latest/security/SCTP.html https://www.kernel.org/doc/html/latest/security/SCTP.html (and more ...)
- billfruit 6y agoThat discussion of merging sctp functionality into glibc is from 2004. Anyone knows what happened after that?
- ghoshbishakh 6y agoGood for getting started with network programming. My university refers this for the computer networks lab course.
- folex 6y agoStrangely no mention of High Performance Browser Networking https://hpbn.co https://hpbn.co I also would mention Distributed systems for fun and profit http://book.mixu.net/distsys/ http://book.mixu.net/distsys/ while being not exactly about network programming, it is likely a next step for anyone who's building apps that is scattered across several backends/services connected by the network
- jcrubino 6y agoBeej's is the classic of classics.
- known 6y agohttps://beej.us/guide/bgipc/html/multi/index.html https://beej.us/guide/bgipc/html/multi/index.html is also good
- quake 6y agoI love this guide! My first job out of university reqiured networking a small Linux device to an FPGA running a UDP stack, with nothing else. I'd never done anything with networking in C before, and this guide just made everything click
- cute_boi 6y agoAfter reading Beej Guide I think I find "The Linux Programming Interface" a good book in general to learn about sockets and other linuxy thing etc. Sadly it hasn't been updated since 2010.
- jason0597 6y agoBeej has had great guides for many things on the internet for decades. I fondly remember learning C from Beej's guide to C [1] upon being recommended by WinterMute (from the Nintendo homebrewing community). Best introduction to programming I've seen by far! [1]: https://beej.us/guide/bgc/ https://beej.us/guide/bgc/
- peter_retief 6y agoThis is so useful I can't believe I have never seen it before.
- Shared404 6y agoBe sure to check out Beej's other guides. They're some of the most useful I've seen.
- TheSpiciestDev 6y agoAs soon as I read the title, I felt joy! I had followed this guide when I had began programming early on and had a great experience. I recognize it by its name alone!
- jjice 6y agoOne if the best guides/books on programming I've ever read. This taught me the foundations of network programming and the fact it's available for free is incredible. I just took a second and ordered the paperback right now because of how fantastic it is. Aside from the book being really in-depth and understandable, Beej adds in quite a bit of humor and that is something I love in a good software book.
- freakynit 6y agoSuch simple, but informative guides should be how official documentations should be written.
- stiff 6y agoProduction failures due to bugs in both TCP-based servers and clients happen all the time, long time ago I invested a little time to learn basic socket programming in C and the ROI on this has really been spectacular. "Unix Network Programming" by Stevens is a great book on this topic, in particular it carefully discusses all the different ways things can go wrong. Wish there was something more up to date that could be recommended, but I don't know anything of comparable quality, so I think you still have to read it and later work out all the Linux-specific details, more modern APIs like epoll etc.
- sandes 6y agodownload as pdf https://buzon.io/downloads/75e686f94e1d4a599f2ee9ad521123865044c0907616402cadb091fe85697e1b/a1csap/ https://buzon.io/downloads/75e686f94e1d4a599f2ee9ad521123865...
- _underfl0w_ 6y agoOr you can get it from the official source [0] and not some PDF on a file sharing site linked from an HN comment. [0] https://beej.us/guide/bgnet/ https://beej.us/guide/bgnet/
- icare_1er 6y agoThis one and "Programming from the gound up" [https://download-mirror.savannah.gnu.org/releases/pgubook/ProgrammingGroundUp-1-0-booksize.pdf https://download-mirror.savannah.gnu.org/releases/pgubook/Pr...] are the two bibles i used and often go back to.
- yrgulation 6y agoTo anyone writing tutorials or guides, this is the gold standard - at least for me. After many years I still remember writing my first tcp client following this tut. I wish more content would be as focused and concise as this.
- atulvi 6y agoI printed this from an internet cafe long back when I didn't have internet at home in India. I wanted to learn about sockets however I could.
- nathias 6y agobeej's guides are the best
- anonu 6y agoI think this thing has been around for at least 15 years. Glad to see its still being maintained and updated.
- lxeiqr 6y agoDespite of its age, Beej's Guide is still one of the best introductions to network programming I've seen so far. I love how apart from the basic and concise explanation of TCP and UDP (and generally sockets in UNIX-like environments), there's also a separate, short "Advanced Techniques" section that can be very useful if you want to explore the subject even further.
- pknerd 6y agoWould be interesting to see a Go or Rust version not it.
- trillic 6y agoBeej's guide got me through my networking class in college. As a result I actually understand networking. Thank you Beej!
- formercoder 6y agoWow I read this in 2006ish. Amazing document to still be around.
- Rebelgecko 6y agoBeej's guide is great and still very relevant today (at least if you're programming in C). Are there any equivalent documentation/tutorials for other domains? An equivalent for machine learning would be great, although part of what makes Beej's guide timeless is that a lot of the underlying concepts and syscalls have been static for decades.
- pingiun 6y ago> s/he Just use they, it reads better and includes everyone instead of people with binary genders
- specialist 6y agoAgreed. I've been retraining myself to default to singular they. https://en.wikipedia.org/wiki/Singular_they https://en.wikipedia.org/wiki/Singular_they Old dog, new tricks. But I'm slowly adapting.
- _underfl0w_ 6y agoI've also personally never understood the slash syntax. Since one word requires the "s" and the other doesn't, shouldn't we use parentheses like when words may or may not be plural? e.g. "(s)he" like you might say "socket(s)" or "Unix(es)"? Moot point if it doesn't solve the issue of it still being binary, I guess.
- dragonwriter 6y agoIronically, with “they” becoming a more common specific-individual-identity-pronoun preference, it is at risk of losing its inclusivity, and of becoming as problematic for unknown individual preference as she and he. But that's a problem for the future, right now “they” is usually the best inclusive pronoun available.
- petejames 6y agoBeej is a Lambda School instructor. He taught me CS.
- legerdemain 6y agoWait... the Lambda School that's constantly on HN for its disgruntled students, questionable success rates, and murky financials? What possessed beej to associate his name with them?
- YuriNiyazov 6y agoThe view from the inside is different than the view from the outside.
- legerdemain 6y agoSure, here's an HN thread with lots of views from the inside: "Lambda School is the biggest mistake I made this year"[1] [1] https://news.ycombinator.com/item?id=25415017 https://news.ycombinator.com/item?id=25415017
- legerdemain 6y agoAnd here's some reporting that aggregates questionable practices and student complaints: "The High Cost of a Free Coding Bootcamp"[1] And here's some paywalled reporting from The Information with even more student complaints: "Lambda School's Growing Pains: Big Buzz, Student Complaints"[2] Please, tell me more about the view from the inside. [1] https://www.theverge.com/2020/2/11/21131848/lambda-school-coding-bootcamp-isa-tuition-cost-free https://www.theverge.com/2020/2/11/21131848/lambda-school-co... [2] https://www.theinformation.com/articles/lambda-schools-growing-pains-big-buzz-student-complaints https://www.theinformation.com/articles/lambda-schools-growi...
- udev 6y agoI have special warm feelings for Beej's guide. I remember particularly enjoying the warm and jovial tone in his guide. I first read through it some 20 years ago while being a student in an easter-european university, where the tone and style of professors was very "dictatorial", dry, and overly-technical. Beej's style of exposure was a breath of fresh air, and brought a major realisation for the then young-me, that you can teach complex topics in a friendly manner.
- daotoad 6y ago> while being a student in an easter-european university, where the tone and style of professors was very "dictatorial" I know it's just I typo, but now I have an image stuck in my head of a large rabbit, dressed up like Mussolini, lecturing about computer science. Beej's guide was so amazingly helpful and welcoming when I found it over a decade ago. Poorly written guides that try to be friendly or conversational are often worse than dry and terse guides of similar caliber, which really makes me appreciate the good and truly great ones. And Beej's Guide is a truly great one.
- globular-toast 6y agoI've always loved networking and recently implemented an IP stack just for fun. It doesn't take that long to be able to write ping yourself and ping Internet hosts. I was going to go as far as TCP but haven't gone there yet. I think it's now time to read this and find out all the stuff I got wrong and cement the stuff I got right.
- toast0 6y agoI recently wrote a good enough tcp to layer an http server on top. It's not very good, but I did it, and now I can use someone else's ;) PS Hello fellow toast
- globular-toast 6y agoHello :) I'll definitely finish mine one day then. I was more interested in the IP layer when I did mine and learning about routing. TCP seemed a bit too complicated and not that interesting, but it would be cool to have at least once gone from a raw socket to HTTP. I know exactly what you mean as well. When using technology there is a comfort in knowing that you could conceivably implement it yourself if you absolutely had to.
- the_only_law 6y agoNetworking is probably one of the parts of computers I’ve been consistently interested in over the years. I was recently looking at the man page for the addresss_families supported and there’s all sorts of crazy stuff that’s been adapted to the socket API in there. I’ve been working on developing myself a custom ISDN stack recently. So far it’s just been me trying to design it at a high level without falling to feature creep.
- globular-toast 6y agoI think what I love about it is the Internet is the biggest machine in the world! I can literally flip bits on the other side of the world by pressing some of these buttons here on my desk. After becoming pretty much accustomed to living behind an IPv4 NAT my interest was rekindled when my ISP deployed IPv6 and all of a sudden each device in my house has a real public IP address.
- macksd 6y agoThis "Beej" fellow is a legend. This is an example of very clear documentation that scales well with your level. When I was learning C/C++ as a teenager, I found the guides to be very accessible. They were recommended all the time to people asking questions on cprogramming.com forums. As I've referred back to them as a professional I still find them comprehensive and helpful. This is an excellent model and level of quality for other technical writers to aim for. Brian Hall: thank you!
- davidw 6y agoAmong other things, Beej has been a leader in putting together events and connecting software people here in Bend, Oregon. Well, when getting together was a thing, at least.
- archsurface 6y agoThis site has become groundhog day, should just automate re-submission: https://hn.algolia.com/?q=beej https://hn.algolia.com/?q=beej
- master_yoda_1 6y agoThis was my first intro to network programming in school very very long time.
- adamnemecek 6y agoI’ve always felt like the hard part of networking isn’t the APIs but the threading problems that you will have very soon after you try to write anything serious.
- RobRivera 6y agooh hey, I'm actively reworking through this guide for the 3rd time. I always manage to get rusty in the fundamentals after enough time not practicing. the latest variant is highly digestible. the struct walkthrus seem more accessible
- deleted 6y ago[deleted]
- strifey 6y agoWhen I TA'ed a course that taught networking fundamentals, I always pointed folks at this guide when they were struggling with assignments. Can't believe that was 8 years ago.
- mwww2 6y agoThis is gold! Thank you so much.
- armadsen 6y agoI had the privilege of working with Beej for a couple years at my last job. He was one of my favorite coworkers I've ever had. Just great to be around and work with. Incredibly sharp, but also humble, easygoing, and eager to just solve problems.
- beej71 6y agoThe feeling is mutual!
- mvh 6y agoAt Northeastern we use this guide as the canonical “textbook” for the graduate distributed systems course.
- dang 6y agoPast discussions on this classic include: 2017 https://news.ycombinator.com/item?id=13983212 https://news.ycombinator.com/item?id=13983212 2017 (a bit) https://news.ycombinator.com/item?id=13670971 https://news.ycombinator.com/item?id=13670971 2016 (a bit) https://news.ycombinator.com/item?id=12402313 https://news.ycombinator.com/item?id=12402313 2015 https://news.ycombinator.com/item?id=9445692 https://news.ycombinator.com/item?id=9445692 2015 (a bit) https://news.ycombinator.com/item?id=9623813 https://news.ycombinator.com/item?id=9623813 2013 https://news.ycombinator.com/item?id=5241220 https://news.ycombinator.com/item?id=5241220 2009 https://news.ycombinator.com/item?id=584557 https://news.ycombinator.com/item?id=584557 2008 https://news.ycombinator.com/item?id=337371 https://news.ycombinator.com/item?id=337371 ("Wow, I first read this when I was in high school. It's still being updated?")
- beej71 6y agoAll your kind words are literally bringing tears to my eyes--thank you! My current plan is to keep writing freely-available guides for as long as I can reach the keyboard. And maybe even longer with what will undoubtedly be awesome futuristic speech recognition--or mind-reading! That's not scary at all! I'm leaning on bash/zsh scripting one I finish the utterly gigantic C guide I'm on now... hopefully later this year. But I'm always open to suggestion for topics... :)
- Issaclabs 6y agoYou have touched so many people and have created real value with your work
- daotoad 6y agoThis guide was instrumental in letting me understand sockets and network programming. I've probably recommended it to at least a hundred other people over the years. You have made a huge positive impact. Thank you.
- aynsof 6y agoYour guide single-handedly got me through network programming in C at university. This was back in the early 2000s. Thank you! And I'm so happy to see your guide still getting updated.
- runetech 6y agoYour original document was the quintessential resource for me in the 90s. Heartfelt thank you for putting me on track back then. Highly appreciated!
- reflexe 6y agoI read your guide when i was 14 (translated to hebrew), until now, i have managed to write a functional usermode tcp/ipv4 stack, and now in the middle of development of a usermode-based wireless networking device in an international company. You are a big part of it. Thanks.
- deleted 6y ago[deleted]
- idolaspecus 6y agoIt sounds like Beej needs to write a "Beej's Guide to Writing Guides".
- seishan 6y agoI remember reading this when I was in high school out of curiosity. Thanks again for writing this (and many more), Beej.
- scudd 6y agoCurrently taking Graduate Introduction to Operating Systems at Georgia Tech, and this guide has been like a bible for me. Huge thanks to Beej!
- tpl 6y agoWonderful resource, really helped me have fun playing with C sockets. Thank you Beej!
- deckarep 6y agoOh wow, thank you Beej for this work and content! Your resource has been a tremendous reference to many of us myself included and still stands as one of the best resources to network programming today!
- stjohnswarts 6y agoI credit beej to my first serious job. I worked through the network and concurrency guides and landed the job that started me off on my career. Thanks Beej! Please keep it up :D
- ajarmst 6y agoA couple of decades ago, I spent a few years teaching an introduction to network programming using C on an embedded board running uCLinux for Network Engineering students. While my primary text was Stevens, Beej's guides were an invaluable secondary reference for my students. There were many, many occasions where students who were were having difficulty understanding my explanations could recover using Beej's approachable, application-oriented notes. Eventually, I found myself frequently abandoning my own notes and just lecturing from Beej's work. I miss the days when I still worked with students that close to the metal, helping them build their own network devices. Thanks for the reminder of a time I still have fond memories of.
- elliotmr 6y agoI read this for the first time probably 15 years ago, and to this day I can't think about IPv6 without thinking about this passage from the guide: What does this suggest to you? That we need a lot more addresses. That we need not just twice as many addresses, not a billion times as many, not a thousand trillion times as many, but 79 MILLION BILLION TRILLION times as many possible addresses! That’ll show ’em! You’re saying, “Beej, is that true? I have every reason to disbelieve large numbers.” Well, the difference between 32 bits and 128 bits might not sound like a lot; it’s only 96 more bits, right? But remember, we’re talking powers here: 32 bits represents some 4 billion numbers (232), while 128 bits represents about 340 trillion trillion trillion numbers (for real, 2128). That’s like a million IPv4 Internets for every single star in the Universe.
- goldenshale 6y agoWhat a classic! Back in 1999 I wrote the networking infrastructure for a distributed, evolutionary, fractal art system for Steven Rooke (maybe you remember the fractal absolut vodka bottle on the back of Wired magazine) and I learned everything from Beej's guide. This brought back great memories. What a serious internet classic for so many software devs. Thanks Beej!
- jfdi 6y agoBeej thank you! Like so many others your work was a beacon for me early on and the best resource in the world to explore writing networking code. Cannot wait to see what you publish next, so glad you’ve decided to publish even more!
- le_didil 6y agogreat classic !! I didn't know it was still maintained, thanks beej !
- throwawnetwork 6y ago465