The C++ framework for developing highly scalable, high performance servers on Windows platforms.

The Server Framework - Example Servers


The Server Framework provides a framework for client and server software that uses asynchronous I/O and I/O completion ports. The Server Framework makes it easy to write high-performance stream (e.g. TCP) and datagram (e.g. UDP) servers and clients. The library also includes extensive classes for addressing using either TCPv4 or TCPv6 addressing. The server and client frameworks provide specific socket classes that expose only those details that are appropriate for the situation at hand. There is also a large amount of utility code to help with the construction of servers and clients. All classes are built to allow for networking other than TCP and UDP should the need arise. It's possible to add filtering to stream based systems so that the data stream can be manipulated before it reaches user code on the way in and before it reaches the network on the way out. This makes it easy to add encryption or compression, etc, below the business logic code.

Start here: Advanced concepts Examples

The Server Framework ships with 86 example programs which demonstrate different aspects of the framework. All of the examples are available in source code form from links on the pages that describe the contents of the example packs. Of course the examples that you can actually build will depend which options you selected when you licensed the framework (see here for licensing options) as this determines which tools libraries that you are sent and various example servers need various different tools libraries, it becomes fairly clear what you have and what you need once you take a look at one of the example projects.). The examples are grouped together in 'packs' of similar functionality, so, the easiest to understand servers are in the SimpleServers pack, servers that run as services are in the Services pack, etc. Please contact us by email for details of how to obtain any additional libraries that you may require to build particular server examples, or for custom server development.

Please note that, in general, each example aims to demonstrate one new feature. You can, of course, mix and match features and merge examples into considerably more complex scenarios than those presented here and some of the examples are fairly complex in their own right. We tend to develop new examples as and when clients require specific functionality in a server. Once more than one client needs a particular style of server we figure that it's probably worth creating an example that shows everyone else how to do it.
The current examples are split into the following packs. We note with each pack which options you need to license to be able to build the pack. Note that, of course, all packs require the "base framework" license.
  • Simple Servers - A selection of example servers that demonstrate various aspects of the server framework. [15 examples]
  • UDP Servers - A selection of example UDP servers that demonstrate various designs for UDP servers including connection oriented servers. [12 examples]
  • Connection Termination Examples - A server and client that demonstrate the various ways to terminate connections and what each method means in practice. [2 examples]
  • Compressing Server Examples - TCP and UDP clients and servers that use the compression filter to add ZLib compression to the data flowing between them. [12 examples]
  • Timer Example Servers - Servers that demonstrate how timers can be used to generate periodic events within a server. [2 examples]
  • Gateway Server Examples - This selection of servers demonstrate servers which connect two connections together. The gateway server can act as a proxy, or can process data as it flows from one connection to another, we've also developed gateways which perform protocol translation and which provide secure 'tunnelling' for insecure protocols. [3 examples]
  • Services - Building servers that run as services. Requires the Windows Services license option. [2 examples]
  • Services with Performance Counters - Building servers that run as services and expose performance counters for use with the standard Windows Perfmon tool. Requires the Windows Services and Performance Counters license options. [5 examples]
  • Servers with Performance Counters - Building servers that expose performance counters but that run as normal executables. Requires the Performance Counters license option. [2 examples]
  • Data Distribution Server examples - Servers and clients that demonstrate a high throughput publish/subscribe system. The examples consist of a simple pub/sub server, a client that acts as a data souce for the server and a client that acts as a subscriber. The server supports distributing the data that arrives from the data feed to several connected subscriber clients in an efficient manner. Requires the Performance Counters license option (but only because the server exposes performance counters so that it's easy to profile, the underlying publish/subscribe model doesn't require additional licensing. [3 examples]
  • OpenSSL Servers - Servers that use OpenSSL to provide secure communication. Requires the OpenSSL license option. [4 examples]
  • SChannel Servers - Servers that use Microsoft's SChannel to provide secure communication. Requires the SChannel license option. [4 examples]
  • SSPI Negotiate Servers - Servers that use Microsoft's Negotiate SSPI to provide secure communication between Windows machines using NTLM or Kerberos. Requires the SSPINegotiate license option. [4 examples]
  • CLR Hosting Servers - Servers that host the CLR and allow business logic to be written in .Net code. Requires the CLR Hosting license option. [4 examples]
  • MFC Servers - Some examples of how best to incorporate the server framework into MFC applications. Both clients and servers. [2 examples]
  • Misc Servers - Miscellaneous servers that don't really fit in any of the other packs; e.g. Bluetooth servers, HTTP/HTTPS Servers, Telnet Servers, POP3 Servers. These may require additional licensing, contact us for details. [4 examples]
  • Unreliable Delta Servers - A selection of example UDP clients and servers that demonstrate semi reliable data flow using the Carmack Unreliable Delta system. Ideal for sending data which is predominately unreliable and time critical in nature. [6 examples]
  • WebSocket Servers - A selection of example WebSocket clients and servers that demonstrate the features of the WebSocket Option Pack. [8 examples]

Generated on Sun Sep 12 19:06:42 2021 for The Server Framework - v7.4 by doxygen 1.5.3