As one of the Amazon reviewers states, "sockets receive a scant five pages." Does anyone know of an education resource like this that does cover some real world socket programming examples in C (or C++)? This would help me immensely in an upcoming project.
Stevens's Unix Network Programming is the classic. Any edition will do -- quite frankly the first is clearest. He gets coverage-happy (STREAMS, seriously?) in the 2nd and the 3rd (completed by another author after Stevens's death) is just plain too big.
After reading the Beej's guide to networking programming [1], I wondered what could be the simplest approach to making a multiclient socket server using unix pthreads/mutexes. I ended up writing [2] (C++), mostly as an exercise. Although I have never tested it properly nor I consider myself to be a great programmer, it seems to work. Not something to learn from, though. Anyway, any feedback is really appreciated.
I found that opening a socket and using select is pretty straightforward. When I write an app, the head-scratching is generally over how to build an event-loop to juggle all the stuff I have going on. Most of the time when I write a tool it will need to do this, but I haven't seen any good books that cover it.
Are there any book recommendations about taking the next step? i.e. Structuring your application so you do regular reads and writes, sleep at sensible times so you aren't sledging the host, useful message-passing patterns. That talk about the tradeoffs, and optimisations, whether you should be doing one select per loop, or trying to do a greedy read on each pass, possibly even running select a few times in order to get that data in.
Stevens volume I seems like it would have been a good place for this, maybe it's out of scope. It focuses on ways you can use the unix API, but avoids straying into application design issues.
I Advanced UNIX Programming with Linux
1 Getting Started
2 Writing Good GNU/Linux Software
3 Processes
4 Threads
5 Interprocess Communication
II Mastering Linux
6 Devices
7 The /proc File System
8 Linux System Calls
9 Inline Assembly Code
10 Security
11 A Sample GNU/Linux
III Appendixes
A Other Development Tools
A.1 Static Program Analysis 259
A.2 Finding Dynamic Memory Errors 261
A.3 Profiling 269
B Low-Level I/O
Reading and Writing Data 282
stat 291
Vector Reads and Writes 293
Relation to Standard C Library I/O
Functions 295
B.5 Other File Operations 296
B.6 Reading Directory Contents 296
C Table of Signals
http://www.amazon.com/Advanced-Linux-Programming-CodeSourcer...