Magi

Contact info
Work
Research
   Publications
Studies
Free Software
Hobbies
   Pseudoart
Articles
Photography
About me
   Curriculum Vitae

©Marko Grönroos, 1998

MagiCServer++ Server Framework

Contents
Features
Limitations
Requirements
Downloads
Licensing
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.

Features

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

Limitations

  • 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

Platforms

The following Linux distributions have been tested:

DistributionNotes
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

Downloads

Licensing

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