Contact info
Free Software
About me
   Curriculum Vitae

©Marko Grönroos, 1998

MagiCServer++ Server Framework

MagiCServer++ is a framework for implementing efficient and flexible Internet server applications. It supports both connection-based TCP and connectionless UDP datagram protocols in a transparent fashion.

The main task of the framework is to listen to a server socket and a number of connected TCP client sockets. When a client connects to the server socket, a new connection socket is created and added to the list of established client sockets. When data arrives from a client to a connection socket, it is relayed to the user application as a request. The application can respond, if necessary. The user application is notified also about other important events, such a establishment of a new connection, losing an old one, and initiation of server shutdown.

The framework is implemented as a C++ library, which has been kept as independent from other libraries as possible, to make reuse easier. Error handling is done with error codes; exceptions are not used except for constructors. For data structures, low-level C data structures are used for most tasks. Simple support tools are provided for logging, threading, and queues.


  • TCP and UDP
  • Threading and thread locking (Thread and ThreadLock)
  • Easy-to-use logging facility (Log)
  • Transparent distribution interfaces


  • Only one server socket is currently supported in ServerListener.
  • No support for multi-process servers
  • No C++ wrapper for sockets
For a more complete list of limitations, see the chapter Known bugs and limitations in User's Guide.

System requirements

MagiCServer++ has the following system requirements:
  • GNU/Linux operating system
  • g++ (GCC) compiler, version 2.96, 3.0, or higher
  • pthread library
  • GNU Make


The following Linux distributions have been tested:

Red Hat Linux 9g++ 3.2
Red Hat Linux 7.3g++ 2.96 (some pthread functions not enabled by default)
Mandrake 7.0g++ 2.96
Debian 2.2 + upgradesg++ 3.3



The library part of MagiCServer++ is licensed under the GNU Lesser General Public License (LGPL), also called as GNU Library General Public License.

The sample programs are licensed under the GNU General Public License (GPL).

The GNU General Public License and GNU Lesser General Public License

are given in the source package in files docs/COPYING and docs/COPYING.LIB.

The documentation is licensed under the GNU Free Documentation License, as presented in the end of this document.

Last modified: Sat Nov 1 12:56:05 EET 2003