Dunking Parrot Chat Server©

Version 5.01
Updated 08/01/2001


Dunking Parrot Chat is an efficient, feature-filled TCP/IP chat program.  It is used by several large companies in various industries, from a major computer company to schools to lawfirms.  Features are added on a regular basis, and support via email is outstanding.  Since it is possible that I might change my ISP from time to time, please direct all email to me at dunkingparrot@hotmail.com.  Email to this address is usually checked about three times a week. 

THE HISTORY OF DUNKING PARROT CHAT

Dunking Parrot Chat actually came about as part of a completely different piece of software.  In the mid 90's, one of my best friends moved from North Carolina to England.  When he moved, we feared that we had lost one of the major pastimes that we shared... playing cribbage.  We decided to code our own Internet enabled cribbage game.  Of course we would need to include an in-game chat routine.  The chat code turned out to be the first place I started when we began to write our game.  I soon got it working quite well, and was ready to move on to coding the actual game itself, when my buddy found that another company had already published an online cribbage game.   I hated to scrap all of the code that I had written, and it was a great way for me to learn TCP/IP, so I pushed on with the chat piece of the cribbage game, turning it into a standalone chat program.  In time, I saw that the software would fill a need that my office had, and I was able to introduce the software there.  Since then, the program has become a full featured chat program, arguably one of the best private-protocol chat clients that you will find anywhere on the Internet.

INSTALLATION INSTRUCTIONS

Dunking Parrot Chat is distributed as a self-extracting archive.   Simply launch DPSERVER.EXE, then click the SETUP button to begin the installation process.   You may be prompted that you have out of date files on your machine.  If this is the case, you will be notified that you need to reboot your machine.  Once you have done this, you must launch DPSERVER.EXE once again to complete the installation process.  It is recommended that you exit all other programs prior to installing Dunking Parrot Chat.  On some machines, we have noticed that you may get in a cycle where you are constantly asked to reboot your machine.  This is apparently a bug in Microsoft's Installer program.  We can provide a manual solution if you are having this problem.  Feel free to email me if you need help.

UPGRADES

Upgrades to Dunking Parrot Chat are made available at our website.  Most upgrades are delivered as self extracting archives which you simply execute, and the upgrade will occur automatically.  Upgrades will not overwrite your existing settings.  Also, you are entitled to free upgrades for any revision level of the software as long as the version remains at "5.xx".  Dunking Parrot Chat 6.xx, should we ever publish it, may or may not be considered a different work of software.

REGISTRATION

The software that you now own is the demo version of Dunking Parrot Chat Server.  All that it takes to register the software is to enter a special password into the Server!  There are four registration levels available.  Each level determines the number of users that is allowed to logon to the server at any one time.  Here is the pricing breakdown for registration:

When you register the software, you simply tell us how many users you would like to register for and we will provide you with the proper password to unlock your server.  If you later decide you want to add users, simply pay the difference between your current registration level and the level that you desire!  We highly recommend that you go ahead and register for 32000 users.  Also, you must pay for each copy of the server that you intend to run on your network.  You may run as many copies of the client as you like.  Your registration fee is for the cost of one copy of the server.   See the server documentation for more information on how to enter your registration password.  To register, contact me via email and we will discuss your needs.


The Parrot Chat Server

The Dunking Parrot Chat Server will run on Windows 95, Windows 98, Windows Me, and Windows 2000.  It will not run on Windows NT.  For optimum performance, we recommend that you use at least a P3-450 for the server, and let that machine be a dedicated server.  The more powerful the machine, the better the server will run.  However, I did run the chat server for almost two year on a very low end machine with no problems, and with about 150 users logged on at any one time.

You only need to launch the server to make it active and ready to accept logons.

When you start the server, an icon will appear in your tray, down by the system clock.  This icon shows a little waiter (a "server").  You can click on this to restore the server window if you ever minimize it.  The server itself looks like this:

TheServer.JPG (28853 bytes)

The server has several text boxes on it.  Although the server can run indefinitely without human intervention, these fields on the screen are provided for your convenience to see that the server is functioning correctly.  They perform the functions described below:

Server Controls
Last Inbound Message This shows the last incoming message to the srever.  This allows you to see how much activity is occurring on your server.  This shows the raw data coming into the server, and is not formatted for ease of reading.
Last Outbound Message This shows you the last message sent out of the server.  This field also shows raw, unformatted data.
Status This shows any informational messages that the server might have for you, such as the fact that a user logged off.
Ping Send To This shows you the last time that a ping was sent out, and who it was sent to.  Pings will be described later on in this document.
Ping Response This shows you the last client that responded to a ping, and exactly when that occurred.
Channels This is a list of all of the channels that are currently active on the server.  Clicking on a channel causes a list of the users in that channel to appear in the "Clients" list box.
Statistics This section shows you both numerically and graphically how many users are currently logged on to the server, what the maximum number of clients is, and what the highest number of users at any one time has been since the server was started.
Registered for x users hows how many users you registered your server for.  Unregistered copies of the server only allow 10 users to be on the server at any one time.  If the word OPERATOR appears, this means that you have registered your server to allow clients to use OPERATOR mode.

 


Clicking on the SERVER menubar displays the following dropdown menu:

ServerMenu.JPG (38237 bytes)

The SHOW INI WINDOW shows you all of the settings that the server was started with.  The INI window, which also displays for a few seconds when the server is started, looks like this:

INI Window.JPG (18346 bytes)

There's lots of good information in this window.  You'll notice that the local port is 3200.  You can also see that we are allowing only 10 channels, that clients are pinged, and that channels are cleaned up every 10 minutes.  You'll notice in the example above that the REGISTRATION KEY and REGISTRATION PASSWORD are blacked out.  In your copy of the program this will show the actual values.  I blacked them out in this example manually so that the more dishonest folks reading this documentation wouldn't see a real registration code.

Next on the SERVER menu you'll see the ACCEPT LOGONS option.   This is enabled by default. Clicking on this toggles the accept logons flag, which means that clients either are or aren't allowed to logon to the server.  If you disable this, clients currently on the server are not affected, however, no new users will be allowed to logon.  I use this when I am getting ready to take the server down for some reason or other and don't want to keep having people logon.  Please note that each server has an "owner".  The owner of the server can logon even if the Accept Logons option is disabled.  You will learn more about this below.

The VISUALIZE feature causes the server to constantly update its GUI.  This is useful if you want to see what is happening on the server, however, for optimum performance we recommend that you disable this option.  When disabled, the server can spend more time concentrating on keeping all of the clients happy.

Next is the GRACEFUL SHUTDOWN option.  This option goes through the connected clients one-by-one and logs them all off.  I like to do this in conjunction with disabling ACCEPT LOGONS just prior to shutting the server down.

Finally we have the SERVER OPTIONS window, which looks like this:

ServerOptions.jpg (61704 bytes)

Basic Options
Save Settings on Exit This causes the server to save all of the options on this panel automatically whenever the program is closed.  You can also click the "SAVE SETTINGS" button to immediately save your settings.
Show Splash Screen at Startup I recommend disabling this. It simply shows you the Dunking Parrot Splash Screen every time chat is started.
Ping Clients for Keepalive This is a pretty important feature.  Since Dunking Parrot Chat is a UDP application, the server has no way of knowing if a client has disconnected from the network or not.  To determine if clients are still out there, the server uses a rotating ping model.  This works in the following manner.  Assume that each user is allowed to not respond to 5 pings before they are kicked off the server.  Also imagine that there are currently three users on our server.  Each cycle, or "ping interval", one ping is sent out to one client.  If the client answers, his missed ping counter is set to zero.  If the client doesn't answer, his ping counter is incremented.  When it reaches 5 (i.e. 5 consecutive missed pings), the client is kicked off of the server.  In my example, on cycle 1 the ping is sent to client one.  On cycle two, client two is pinged.  On cycle three, client three is pinged.  On cycle four, client one is pinged again.   In other words, the more users that are on your system, the less frequently they will receive a ping.  This limits the bandwidth that is used for pings.
Log Server Activity to Disk Every incoming and outgoing message (except for pings) can be  logged to a text file.  See the LOG OPTIONS section below for more details.
Advanced Options
Local Port Defaults to 3200.  Although I have personally never experienced any conflicts by running the chat server on port 3200, your experience may differ. You can choose any port from 1 to 32767.  Please note that if you vary the port from the default of 3200 you must tell your clients what the new port is so that they can use it.
Maximum Users Defines the maximum number of users that is allowed to logon to the server.  This value can not exceed the value that you registered your server for, sorry.
Maximum Channels Allows you to set the limit for the number of channels that can exist at any one time.  The upper limit is 99 channels.
Pings Before Logoff This option determines how many pings each user is allowed to miss before they are kicked off.
Ping Interval This is the number of seconds the server waits between outbound pings.
Clean Up Channels This allows you to choose how long it is before channels are cleaned up.  The default is 10 minutes. This means that every 10 minutes the server will delete any channels that don't have users in them.
Op Password This is the operator password.  Clients who wish to access Operator Mode must know this password.  The field is masked with "*"s, and if you have not paid for operator mode, this option will not be enabled.
Admin Password This is the administrator mode password.   This is masked with "*"s. 
Server Owner This is the nickname of the user that is considered the "owner" of the server.  The only special privilege that this user will have is that they are allowed to logon even if logons have been temporarily disabled.  This allows you to remotely turn logons off or on.
The Server Welcome Message
You are allowed to key in your own welcome message. This message is displayed to each user when they first logon to the server. This is a good place to store any important information that you want every user to know.
Additional Options
Dunking Parrot Software tries very hard to meet the needs of our users. Each of these Additional Options was added at the request of various customers. To be honest, I added many of these features for people who didn't even register the server.  If you do register it, I'll try to support you even better than I did for those folks who couldn't be bothered to pay for the software.
Start Server Minimized This starts the program with the server minimized to the system tray.
Broadcasts Allowed Sometimes users can get out of hand with the broadcasting feature.  If too many people are using broadcast in a nonproductive way, you can disable them at the server level.  When this is done, the broadcast checkbox on each client will automatically be disabled.  The client's broadcast-to-channel option will also be disabled.
Paging Allowed This enables or disables each client's ability to page one another.
Do Not Disturb Allowed This option enables or disables each client's ability to activate the DO NOT DISTURB flag.
Prompt for Info/Upgrade These options cause the server to periodically prompt clients to enter missing information or to upgrade to the most current release of the server.
Always on Top Stickies Allowed Unchecking this will prevent users from sending "always on top" sticky messages.  These messages can sometimes be abused by users, which is why you might want to disable them if they get to be a problem. 
Broadcasts Show as Popups This means that when a user sends a broadcast message it will show up on all clients as a popup message box. 
Broadcasts show as Server Messages When a user sends a broadcast message, all users will receive it as a normal server message.  This can be used in conjunction with the broadcast popup option or as a standalone option.
Only Operator can Lock Channels When enabled, only the server operator can lock or unlock a given chat channel.
Message Options
Display Signon Messages to Clients When disabled, clients will not see "<user> has logged off of the server" type messages.
Display Channel Messages to Clients When disabled, clients will not see messages when people leave or join their channels.
Reload Unavailabile Message As mentioned earlier, you have the ability to cause the server to temporarily not allow logons from any new users. If the server is set for "logons disabled", a message is sent to any user who attempts to logon.  The default message simply states that the server is currently unavailable and that they should try back later.  This message is stored in a text file in the same directory as the server.  The text file is called "UNAVAIL.TXT".  You can use Notepad to change this message on the fly.   If you do change it, simply click this button to cause the server to reread this text file.

Other Server Options

LOG OPTIONS - Clicking the log options button takes you to the following screen:

LogOptions.JPG (35627 bytes)

The server has two styles of logging.  Native Logging simply logs every message exactly as the chat server sends and receives it.  This type of log is unformatted and can be hard to read.

Formatted Logging allows you to select what all types of messages that you would like to have logged.  Simply scroll through the list and place a check mark beside each event that you want logged, and the server will take it from there. 

PERMANENT CHANNELS - Clicking on the Permanent Channels button will bring up the following window:

PermChannels.JPG (43718 bytes)

You can add "Permanent Channels" to the chat server.  These are channels that are automatically created when the server is started, and they are not deleted when channel cleanup occurs.  Please note that although the window shows the ability to create separate logfiles for permanent channels, this is a future option of the Parrot Chat Server, and it is not currently enabled.

Going back to the server menubar options, there is also an option entitled "Client Upgrade Info".  I like to work on the Chat Client, adding new features wherever possible.  Since I do this so often, sending out updates of the client to everyone can get old sometimes.  To make upgrades easier, the client has a built in "upgrade now!" feature.  To activate this feature, you must first tell the server where the upgrade resides, and what "build" of the client the upgrade is.  Selecting the "Client Upgrade Info" option shows you this window:

ChatUpgrade.JPG (16809 bytes)

When I make a new version of the client available, I will let registered owners of chat know about it in several ways.  First, I will update my webpage (http://dunkingparrot.webhop.net) with a copy of the new client.  Secondly, if the chat owner can receive files through email, I will send the owner a copy in that manner.  I will also tell you what "build" the client is.  A "build" is simply a number that gets incremented every time that I compile the source code of the client.  The new client's filename will be "chat.bin".  Now, if you have a webserver in your shop, you might want to simply copy the new chat executable into a directory on that webserver.  Then enter the address of that webpage into the space provided.  As shown in the example above, the web address for this upgrade is http://home.carolina.rr.com/outdooralmanac/files/chat.exe   Please note that this URL is provided as an example only.  If your company does not have a webserver but does have outside internet access, you can key the address of my webpage in there.  Until further notice, this address will be http://dunkingparrot.webhop.net/Dunking Parrot Chat Client.exe.   If your company does NOT have a webserver that you can use, and if you don't have outside internet access, then unfortunately you will not be able to use the automatic upgrade process.

Once you have entered this information, every so often the chat server will "secretly" tell all of the logged on users what the most current build of the client is.   If the newest build is greater than the build of any executing client, then that client will pop up a message to the user to say that a new version of chat has become available.  They will then have the option of automatically downloading and installing the new version of chat via their web browser.


REGISTERING THE SERVER

Registration is easy!  Send a check or money order to us at the address shown at the top of this document.  We will send you your registration code in the mail.  When you receive your code, start up the server.  On the server, you simply click the HELP menubar option, then select "REGISTER ME!"  The following window will be displayed:

Register.jpg (43214 bytes)

If you paid for a 25, 50, or 75 user license, you simply key in the code that we provided you with and select "REGISTER!".   If you entered the codes correctly, a messagebox will appear telling you how many users you were registered for.  The server will also immediately configure itself for that number of users; you do not need to restart it or anything. I recommend going to FILE and clicking SAVE SETTINGS after you register the server. You should not need to do this, but it's best to play it safe. 

Unlimited User Registration is a little more in depth.  Since technically the number of users allowed on the server is stored in an array, I must somehow define the upper bounds of that array.  With the UNLIMITED USER license, you are asked to key your codes into the box as shown above.  Then you must key in a number from 1 to 32000 to specify the bounds of my array.  Note: Although we call it "Unlimited", the maximum number we accept is 32000.  I recommend entering a realistic number in this field.  You can always change it later; with an unlimited license you are NOT locked into your choice.  You can always come back here and select a different number.  The lower the number you choose, the faster the server will run, and the less memory it will use on your machine. 

We have been using Dunking Parrot Chat at my office for almost three years now.   I like to run the server set up for 1000 users.  The most we've ever had at one time is 160+ users.  We can not guarantee that your machine can handle 32000 users.  

The OPERATOR MODE REGISTRATION CODE is the place that you enter your key to allow clients to activate Operator Mode.


TECHNICAL NOTES

DP Chat was written using Microsoft Visual Basic 5.0 Professional Edition. Versions of the client greater than 3.16 and the server greater than 3.14 were compiled with Microsoft Visual Basic 6.0 Enterprise Edition.  The source code is available for $10000.  The source code may not be resold or used for profit.  You CAN use it to LEARN how to write your own Visual Basic TCP/IP applications.  You must also sign a non-disclosure agreement if you wish to purchase the source code.

If you register Dunking Parrot Chat for "unlimited user" mode, I will be happy to work with you to make any changes that you feel might benefit the program.  Basically, it works this way.  If you have something you'd like to see added or changed, simply let me know via email.  If I like the idea and feel that it might benefit the use of DP Chat in my own day to day work, I will be happy to add the feature as quickly as possible.  If I feel that the change is NOT beneficial to me or my office, I might be willing to make the change for you on a contract basis.  My contract basis works like this:

You first agree to pay $10000 for the source code, of which you immediately send in a non-refundable $1000 deposit.  You pay for the source code because the new source code becomes property and responsibility of your company.  I will then put in up to ten hours of work into making the changes that you have requested.  You are not billed for any time in this ten hours.  Most changes take LESS than ten hours to make.  Once the change is complete or the ten hours are up, I will send you a "crippled" version of the new client and/or server.  This crippled version will work BUT will only allow ten users to log on at one time.  You will approve the changes and/or the direction that the changes are going in.  If you approve of the changes, you then send in the balance of the $1000.  If the changes are complete, I then send you the fully functional version of the client and server.  If the ten hours are up and the changes aren't complete but look right to you, I will complete the work at the rate of $50.00 per hour.   Once the changes are completed and I have been paid and you have been provided with the new client and server, you will also be provided with the complete source code.  After you have acknowledged receipt of   this I will DELETE your version of the source code from my machine.  It then becomes your responsibility to back up and save the code.  You are free to then modify it as you see fit for use within your company.  If you have more changes that you want me to make, I will do it at the rate of $100.00 per hour.  You will be required to provide me with the source code from your company repository.  It is also your responsibility, once you buy the source code, to ensure that you DO NOT compile and save it using a version of Visual Basic GREATER than the one that I have on my machine.    Although I try to keep current on my development tools, there is no guarantee that I will have upgraded my machine to match yours.   Therefore, before making changes to the code on your own, you should ensure that you are working with ONLY the same release of VB that I currently have on my machine.  Of course, everything stated in this text is negotiable.


DISCLAIMERS

Dunking Parrot, Dunking Parrot Software, Dunking Parrot Chat, Parrot Chat Client, Parrot Chat Server, and Dunking Parrot Chat Client and Server are all copyright © 1998, 1999, 2000 by Sean Jeffries and are trademarks of Dunking Parrot Software.

Visual Basic, Windows 95, Windows 98, Windows Me, Windows 2000, and Windows NT are all registered trademarks of the Microsoft Corporation.  Other products mentioned in this document, if any, are trademarks or registered trademarks of their respective owners.