blob: 4f41b26e38e9f0f4d67828c3d833a81e3d1a6d83 [file] [log] [blame]
<body>
QuickServer is an open source Java library/framework for quick creation
of robust multi-client TCP server applications. With QuickServer you can
concentrate on just the application logic/protocol on hand.
<br/>&nbsp;<br/>
QuickServer provides an abstraction over the ServerSocket, Socket and
other network and input output classes and it eases the creation of
powerful network servers.
<table><tr><td>
<img src="quickserver_logo.gif" width="90" height="60" border="0" alt="QuickServer" align="bottom" valign="bottom" />
</td><td>
Example programs demonstrating the use of the library can be found
with the QuickServer distribution [examples folder].
Latest examples, documentation is available through the <a href="http://www.quickserver.org">website</a>.
</td></tr></table>
<br>&nbsp;<br>
Brief Architecture<br>
---------------------<br>
QuickServer divides the application logic of its developer over eight
main classes,
<br>
<ul>
<li>{@link org.quickserver.net.server.ClientEventHandler} [Optional Class]<br>
&nbsp;Handles client events.
<li>{@link org.quickserver.net.server.ClientCommandHandler} [#]<br>
&nbsp;Handles client interaction - Character/String commands.
<li>{@link org.quickserver.net.server.ClientBinaryHandler} [#]<br>
&nbsp;Handles client interaction - Binary data.
<li>{@link org.quickserver.net.server.ClientObjectHandler} [#]<br>
&nbsp;Handles client interaction - Java Object commands.
<li>{@link org.quickserver.net.server.ClientAuthenticationHandler} [Optional Class]<br>
&nbsp;Used to Authenticate a client.
<li>{@link org.quickserver.net.server.ClientData} [Optional Class]<br>
&nbsp;Client data carrier (support class)
<li>{@link org.quickserver.net.server.ClientExtendedEventHandler} [Optional Class]<br>
&nbsp;Handles extended client events.
</ul>
<p>
[#] = Any one of these have to be set based on default DataMode for input.
The default DataMode for input is String so if not changes you will
have to set ClientCommandHandler.
</p>
For more info view QuickServer Wiki - <A HREF="http://code.google.com/p/quickserver/wiki/Architecture">Architecture</A>.
<br/>&nbsp;<br />
QuickServer Source - <a href="https://github.com/QuickServerLab">GitHub</a>.
<br />&nbsp;<br />
Major Features<br />
---------------------<br />
&nbsp;&nbsp;* Create multi-client TCP server applications.<br />
&nbsp;&nbsp;* Support for secure server creations: SSL, TLS. {@link org.quickserver.util.xmlreader.Secure}<br />
&nbsp;&nbsp;* Support for thread per client (multi-threaded) - Blocking Mode.<br />
&nbsp;&nbsp;* Clear separation of server, protocol and authentication logic.<br />
&nbsp;&nbsp;* Remote administration support: {@link org.quickserver.net.qsadmin.QSAdminServer} (With support plugable application commands).<br />
&nbsp;&nbsp;* Command Shell for local administration of server. <br />
&nbsp;&nbsp;&nbsp;&nbsp;{@link org.quickserver.net.qsadmin.QSAdminServer#setShellEnable}<br />
&nbsp;&nbsp;* GUI based remote administration: QsAdminGUI (with support for plug-ins - {@link org.quickserver.net.qsadmin.gui.PluginPanel})<br />
&nbsp;&nbsp;* Restart or Suspend the server without killing connected clients.<br />
&nbsp;&nbsp;* Inbuilt pools for reusing of threads and most used Objects.<br />
&nbsp;&nbsp;* Full logging support [Java built in Logging].<br />
&nbsp;&nbsp;* Support for sending and receiving Strings, Bytes, Binary and serialized java objects.<br />
&nbsp;&nbsp;* Support for identifying and searching a client. {@link org.quickserver.net.server.ClientIdentifiable}<br />
&nbsp;&nbsp;* Support for xml configuration with ability to store application specific
data in the same xml. <br />
&nbsp;&nbsp;&nbsp;&nbsp;[<a href="XMLConfiguration.xml" target="_new">View Sample</a>]<br />
&nbsp;&nbsp;* Support for xml Based JDBC Mapping - {@link org.quickserver.sql.DBPoolUtil}.<br />
&nbsp;&nbsp;* Support for Service Configurator pattern. {@link org.quickserver.net.Service}<br />
&nbsp;&nbsp;* Support for restricting access to server by ip address.<br />
&nbsp;&nbsp;* Support for loading/reloading application jar from xml.<br />
&nbsp;&nbsp;* Ability to add process hooks into QuickServer. {@link org.quickserver.net.ServerHook}, {@link org.quickserver.net.InitServerHook}<br />
&nbsp;&nbsp;* Ability to specify maximum number of clients allowed.<br />
&nbsp;&nbsp;* Support for negotiating secure connection over normal tcp connection.<br />
&nbsp;&nbsp;* Nice easy examples come with the distribution - FTPServer, CmdServer, EchoWebServer, ChatServer, SecureEchoWebServer, XmlAdder, PipeServer, Filesrv.<br />
<br>&nbsp;<br>
Whats New in 2.1.0 ?<br>
------------------------<br>
&nbsp;&nbsp;* Added support for uptime in Host (QuickServer Client)<br/>
&nbsp;&nbsp;* Supports null/no banner when server starts<br />
&nbsp;&nbsp;* Fixed load pattern logic RandomLoadPattern, RoundRobinLoadPattern
(was using index when client key was set)<br />
&nbsp;&nbsp;* Added getHighestActiveCount() method to Object Pools<br />
&nbsp;&nbsp;* Added getHighestActiveClientCount method to QuickServer object<br />
&nbsp;&nbsp;* Defaulted SSL to TLS<br />
&nbsp;&nbsp;* Bug fix for ThreadPool not reducing to max ideal
(stay in wait state n increase over time)<br />
&nbsp;&nbsp;* Bug fix for Client (HashedLoadPattern)
&nbsp;&nbsp;* Disabled non blocking mode (no more supported)
<br>&nbsp;<br>
QuickServer Credits <br>
---------------------<br>
Thanks to everyone who helped me in this project. Thanks to all users
who posted/sent their valuable comments and suggestion.
I would also like to thank all the people who have posted/sent bug
reports. Please do keep reporting any bugs that you find in QuickServer
that way you will be helping in improving it.
Do visit our web site for full credits listing.
<br>&nbsp;<br>
Get Support <br>
---------------------<br>
Do post your questions, suggestions, bug-reports, enhancement-requests
etc. at <a href="http://www.quickserver.org/forum/">Developers Forum</a>. Please do not contact development team directly unless you really would like to send a private message.
<br/>
Note: We provide a higher level of support to individuals and companies
who have contributed to QuickServer project in some way.
There are a number of ways to contribute, do visit our web site for details
on ways of contributing to QuickServer.
<br>&nbsp;<br>
Request to Developers<br>
---------------------<br>
If you would like to contribute to the development of QuickServer
please do get in touch with me. I am always on the lookout for
people who can contribute to make this library even better.
<br/>
If you use QuickServer in your development and if you would like to
share your experience with the QuickServer community, please feel
free to post it in the QuickServer Forums. Thanks
<br>&nbsp;<br>
Web Site : <a href="http://www.quickserver.org" target="_blank">http://www.quickserver.org</a>
</body>