So far this book has been a wonder of knowledge. I recommend it to anyone that is looking for a thorough understanding of network programming. I'm not too far yet, but I felt like expressing my thoughts on it so far.
The only problem I have with it, is the one that everyone seems to mention, and that is the author's use of wrapper functions. This has actually caused me to take more time to learn the ccode, even though it saves code space in the book.
I also feel wierd about starting off just using an already made header for all the programs, as I'd like to get used to knowing which headers to include for each program ahead of time, rather then have 1 header that includes all headers that may be needed. My reasoning for that is... when I make my own network application, I don't plan on including a premade header that includes a bunch of code, #ifdefs, and #defines I won't need. What I've been doing is rewriting the programs that are included, without the header file and wrapper functions just to get used to the process. The further I get into the book, I'm sure I'll become more comfortable with the wrapper functions and just including the premade header.
Although I'm not too far into the book yet, I can already say I've learned quite a bit, and it's definately worth looking into. I'm also reading TCP/IP Illustrated Vol1, and I must say getting into the nitty gritty of the protocols while I'm doing network programming at the same time is helping. I'd recommend reading it as well, especially if you want a very in depth idea of what exactly you're programming. I've also hard that Advanced Programming in the Unix Environment ( i think that's the title ) is a good companion as well, for any interested. All of these books are written by W. Richard Stevens ( RIP ).
P.S. I'm buying "The C Programming Language" as soon as I get payed, hopefully it will be a good companion!