Apollo and the nine Muses

MUSES - Multi Server System

MUSES is a C++ framework for flexible, multi-user internet servers. It takes care of managing sockets for you; you only need to tell it how to handle certain events, such as a new connection being opened.

MUSES is designed for flexibility: the framework tries to assume as little as possible about the server you are building. Almost everything is done by calling event handlers installed by you; you can replace any handler with another during runtime.

MUSES servers allow multiple clients to connect to the same server process; they do not spawn a separate program for each connection. Thus, different connections can easily interact with each other.

Other socket-management packages are often quite generic and symmetric; they handle input and output with similar constructs. MUSES, on the other hand, specializes in the management of multi-user servers, where the output is far more predictable than the input, and where blocking the program flow in order to wait for some user's response is not an acceptable option. Therefore, sending data to a client is achieved via the usual << operator; received data is instead sent to an event handler.

As of version 1.2.0, MUSES code is ready for beta testing. Runtime error conditions are handled either by raising an exception, or by closing the offending connection; the code has been audited by a network consultant who "couldn't find anything Bad or even bad".

Of course, not even consultants are foolproof: version 1.3.1 solved some memory access bugs in programmatic disconnection...

The current version, 1.4.0, provides support for user-defined, transparent filters for server output. These filters can be used to implement protocols, to provide stream encryption, and so on. 1.4.0 is probably the last major beta release; starting from 1.5.0, MUSES should become stable. Please let me know if you have suggestions to be implemented before the end of beta testing.

MUSES Resources

Mailing lists

There are several mailing lists concerning MUSES. You can read the archives, subscribe, unsubscribe and change your preferences from here:


Last updated 31 Jul 2001 by Paolo Gatti.

Logo image used by permission of Bulfinch's Mythology.

Valid HTML 3.2! HTML 3.2 validated - Click to revalidate.

SourceForge Logo Hosted by SourceForge