BTLSocket is a framework for networking based on the BSD socket API (Winsock on Windows) which simplifies the process of creating, reading from, and writing to sockets. The framework offers the usual abstraction of event-based programming, but also allows for manual control of individual sockets.
The framework supports TCP and UDP over IPv4 and IPv6.
The framework allows programmers to string together classes which process input and output to and from the socket, each of these classes passing their results to the next class in line. In this way, it is possible to, for example, asynchronously read from a socket until a certain character sequence is found, and then pass the data read from the socket, or some part of it, to the main program flow.
This mechanism also eases the development of protocols, and allows, for example, the creation of a reusable class which implements SSL or TLS.
In fact, this project aims to also provide a few frameworks consisting of these kinds of classes, including an SSL/TLS framework based on OpenSSL.