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
For a more complete list of limitations, see the chapter Known bugs and limitations in User's Guide.
- Only one server socket is currently supported in ServerListener.
- No support for multi-process servers
- No C++ wrapper for sockets
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 9||g++ 3.2|
|Red Hat Linux 7.3||g++ 2.96 (some pthread functions not enabled by default)|
|Mandrake 7.0||g++ 2.96|
|Debian 2.2 + upgrades||g++ 3.3|
The library part of MagiCServer++ is licensed under the GNU Lesser
General Public License (LGPL), also called as GNU Library General
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
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