Here's something not mentioned yet. Qt
Qt (c++ framework) has a very good "network" class that I've used for TCP and UDP server/client type connections. There are several different examples that cover both:
Blocking connections (connections that will make the current thread 'wait' for a return)
Non-blocking connections (connections that set off call_backs once data is available)
Check it out and you'll never look back. They are very well documented!!!