UNIX Network Programming: Networking APIs: Sockets and XTI; Volume 1
I**G
awesome book! definitely is helping me relearn (for good) unix networking
been programming for close to 15 years, dabbled in this stuff when I was 17-19 but never really learned it well -- relearning it now for good -- very solid technical book and none of that crap you'll find in other tech books -- if you want to learn how to scale your website properly read this
J**G
excellent, the book is quite new
excellent, the book is quite new, and I have not expected to buy a book like this at such low price. Amazing!
H**V
Great book on network programming in C
This is an invaluable resource for any programmer looking to do network programming in C. It also provides great background knowledge for anyone looking to get into network programming. It provides great background knowledge for sockets which show up in Java as well.
M**R
excellent book, thank you ...
excellent book, thank you ...
B**N
Good but overrated
The book is very good for touching on quite a few topics in Network programming and doing so in a concise way. However, when reading the book I often felt as if I wasn't learning socket programming so much as learning how to access Steven's personal API to socket programming. When Stevens introduces a new concept he will immediately afterwords introduce a wrapper function that he uses to do it 'correctly'. From then on he will continue to use this wrapper function throughout the rest of the book whenever he needs to use the stanard library function. In fact, in any 10 lines of source in the book it seems like there will be 7 wrapper functions. This of course makes it very hard to use the book as a reference unless you are resigned to using Steven's wrapper library in all of your projects. In several cases, when attempting to reference some concept I ended up flipping through several pages in different chapters to look up definitions and prototypes for these functions in different place, and then diging deeper into the function to decipher what was going on. All I really wanted was a quick answer to a specific question concerning a socket. I can't deny that what he ends up with is a nicely done system for working with sockets, but I don't feel a general programming text should take this approach. I'll be shopping for a different socket book to use as a desk reference.
D**H
Boring Dictionary of N/W Programming
Though book is preety straight forward.It rarely talks about tricks,code is highly redundant in the sense that everywhere error checking is being done.Which makes it highly boring is that if you are dealing with some kind of N/W installation or S/W trobuleshooting.Talks much more on code,
C**S
Thorough and Timely
Stevens covers in excellent detail some topics, such as non-blocking IO and protocol-independent coding, that other references barely touch. If you are serious about writing network applications, you _need_ this book.
R**S
THE book on its subject
First things first. This is an excellent book. It is also by far the best book on its subject. Those are the first, simplest, and most important things to understand about it.Before explaining what makes it so good, let's get the table of contents out of the way:PrefacePart 1. Introduction and TCP/IP1. Introduction2. The Transport Layer: TCP and UDPPart 2. Elementary Sockets3. Sockets Introduction4. Elementary TCP Sockets5. TCP Client-Server Example6. I/O Multiplexing: The select() and poll() Functions7. Socket Options8. Elementary UDP Sockets9. Elementary Name and Address ConventionsPart 3. Advanced Sockets10. IPv4 and IPv6 Interoperability11. Advanced Name and Address Conversions12. Daemon Processes and 'inetd' Superserver13. Advanced I/O Functions14. Unix Domain Protocols15. Non-Blocking I/O16. ioctl() Operations17. Routing Sockets18. Broadcasting19. Multicasting20. Advanced UDP Sockets21. Out-of-Band Data22. Signal-Driven I/O23. Threads24. IP Options25. Raw Sockets26. Datalink Access27. Client-Server Design AlternativesPart 4. XTI: X/Open Transport Interface28. XTI: TCP Clients29. XTI: Name and Address Functions30. XTI: TCP Servers31. XTI: UDP Clients and Servers32. XTI Options33. Streams34. XTI: Additional FunctionsAppendix A. IPv4, IPv6, ICMPv4, ICMPv6Appendix B. Virtual NetworksAppendix C. Debugging TechniquesAppendix D. Miscellaneous Source CodeAppendix E. Solutions to Selected ExercisesBibliographyIndexAppendicesA. Function PrototypesB. Miscellaneous Source Code (all source code is available for download)C. Solutions to Selected ExercisesBibliographyIndexUnderstanding why the book is as good as it is requires an understanding of what it does: (1) it serves as a tutorial for learning sockets programming, (2) it serves as an API reference, and (3) it serves as a guide to alternative strategies for network programs. It is not an easy thing to address these three disparate goals at the same time. The way Stevens does it is through his method of presentation.The lowest-level building block around which Stevens structures his book is the individual function call. For each call (or minor variations on a single call), he provides the C prototype, and then, in text, explains what the function does, what it's arguments are for, and then provides a small C program that demonstrates it in action (all of the sample programs can also be downloaded from the web). These function-level building blocks are arranged into related sets, each of which is a chapter in the book. Each chapter has a wrapper that explains the basic concepts behind the functions in that chapter, and some review exercises at the end. The chapters in turn build on each other, with the most basic ones at the beginning and the more difficult ones towards the end.The chapters do more, however, than just explain how the functions work, they also present different approaches to structuring socket programs. The basic problem in structuring a socket program is how to handle multiple connections. Choices include iterative vs. concurrent, multi-process vs. single-process, threaded vs. multiplexed. Stevens, in the process of teaching the reader the individual function calls, provides the reader with examples of all of these types of programs, along with a discussion of their relative strengths and weaknesses. I don't know if I can say enough in favor of Stevens' choice to include this material, or enough about the quality of his coverage of it.Now some caveats. First, I have mixed feelings about the presentation of error handling. Stevens' coverage in the text is excellent, but the sample programs have a tendency to exit on error rather than demonstrate recovery. Also, the XTI coverage is thin; only about 120 pages of this 1,000 page book are about XTI. Finally, Stevens absolutely assumes that the reader knows how to program in C, knows general UNIX programming, and how to use Unix development tools (or at least has some other source from which to learn them). If you don't know C programming, you want to get Kernighan & Ritchie's "The C Programming Language". If you don't know about general UNIX programming, get Stevens' "Advanced Programming in the UNIX Environment". If you don't know the tools, I know of many books, but unfortunately none that I would particularly recommend.In closing, whatever the caveats, this is clearly a five-star programming book. If you need to write socket programs, it can save you untold amounts of grief. Writing network programs that are efficient, fast, and robust is far from trivial, and you can think of the thousand pages in this book as a thousand ways to avoid a thousand mistakes. While it expensive, it paid for itself for me in the first hour, and every hour since has been a dividend - if only all my investments had worked out this well...---Note - this book is listed as volume one of a two volume set, but for network programming, the first volume stands by itself quite well. The second volume is a grab-bag of material on pipes, message queues, mutexes, locks, semaphores, shared memory, and remote procedure calls. For network programming proper, the first volume is all you need.
A**L
The book is from 1997, but the TCP/IP principles ...
The book is from 1997, but the TCP/IP principles haven't changed much, and I now have a stronger understanding of networking principles from a programming standpoint. The book also includes IPv6 in its examples and information, which is a huge bonus.
M**M
UNIX
Ottimo libro, informazioni presentate in modo comprensibile. Ottimo rapporto qualità prezzo. Mi risulta migliore delle edizioni seguenti e anche il prezzo è molto più basso rispetto alle edizioni dopo.
W**S
Interesting read, a good book explains IPC in detail
Explains Linux IPC is quite a lot of detail, but had to buy version 2 after reading this one because content were incomplete. I never totally understood memory map system call before reading this book. Not using the concepts every day at my work. Both the version 1&2 are a good addition to my book shelf.
H**H
Five Stars
I like it.
O**B
Be aware
Hello guys, this author wrote this book with his own header files that you can find on his website. If you are a beginner it is very diffucult to get his code working. I managed to modify some parts of the header file and still get a lot of errors.The source code does not compile on my os( kali linux ). There are Make files that you have to configure for your system so that everything work like in the book but for a beginner like myself i could not get them to work. I looked a lot online and did not find any useful articles...
Trustpilot
1 month ago
1 month ago