Shouldn't the first step be install http://www.zeromq.org/ ? That is some seriously amazing stuff right there. Makes network programming (something I've avoided for years) almost trivial.
The point is (or should be) to learn how socket programming works so you know what's going on under all that abstraction and why. That's also why we catch all those exceptions: so we understand why something failed, and how to deal with it in the future. It's also really fun to write complex networking apps from scratch =)
I agree and disagree. It definitely is fun to write awesome complex code, in general, but I'm currently in the middle of developing a network application and the most frustrating part was the socket handling. Everything riding on top of these connections was fun, but actually working out the TCP logic was un-fun.
That said, diff'rent strokes for diff'rent folks, I'm sure you're not the only one to love TCP coding, and I'm glad you guys exist to write tutorials for people like me :)