NetLink Sockets: Networking C++ Library.
Probably the easiest socket C++ library. See the documentation, examples and API reference at http://netlinksockets.sourceforge.net
- Cross Platform Library
- Easy to use
- Powerful and Reliable
- Supports both Ip4 and Ip6
- SocketGroup class to manage the connections
- OnAcceptReady, OnReadReady, OnDisconnect callback model
- Fully documented library API
- Enables to Develop socket functionality extremely Fast
- Fits single threaded and multi-threaded designs
it is easy to use under both windows and linux
Excellent library. Easy to use, easy to install and effective. Good documentation of API and examples of use. I haven't seen any of the issues stated by Oelbox (maybe outdated review??). I have been reviewing many socket libraries for a personal project and I'm picking this one to use with Google's protocol buffers (an excellent serialisation library I must recommend) for the networking functionality. Two thumbs up!!
I haven't used this library, merely glanced at the source, but in my opinion this library has several problems. First, there is potential of memory leaks as it throws exceptions using the new operator. This is generally discouraged as this leaves it up to the catcher to release the memory. Furthermore in several places, memory is allocated by new, but not released (seems mainly to happen in windows when an exception is thrown as the library handles memory different if _MS_VER is defined). Also for windows the library allocates arrays (buffer = new char[bufferSize];) but then uses delete operator instead of delete operator, this is undefined behavior according to the c++ standard. Also in my opinion some of the design choices for this library are strange. For example, the socket class methods are not content agnostic, so the read-function only supports non-binary data. For binary data you need to call rawRead. As there is no documentation this might not be obvious for the user of this library. This also generally makes no sense as the socket-class should not differentiate on what the message contains, neither should the user have to. The use of "using namespace std;" in the header files is also problematic, as is the obvious copy-paste programming used quite extensively throughout the library. I realize that this is an alpha release, but there seems to be so many problems with this library that it cannot be considered for anything else than a curiosity.