Description

LTC is an instant messenger system - similar to early and simple versions of ICQ, MSN, AOL, etc. It supports
online and offline messaging, messages to individuals or broadcasts to all users online, multiple simultaneous logins and
user statuses. There is a client that runs on Windows, and a server that can run on Windows or Linux. It can run on internal
networks or across the Internet.

Why?

I designed and wrote LTC for my gigantic student house when I was at university - it was just before the time when
broadband became available so we couldn't really use any of the Internet instant messengers. It was well used for things
like organising hearty get-togethers for many-a-game-of Charades* and co-ordinating trips to the theatre**...
It isn't as useful now since everybody can just use the Internet ones. LTC served its purpose though -
it operated for 2 years carrying thousands of messages around for about 15 users. My other reason for writing
LTC was to learn C, C++ and Visual C++.

Screen shots

The logon box, main window and tray icon:

The client configuration and the windows server:

Features Explained In Detail

Messaging

You can send a message to a single person who is online by clicking on the name of the person,
typing a message and pressing send. It will be sent immediately.

When you receive a message, your system tray icon will immediately start blinking
(a message icon or a broadcast icon) and a sound may be played. On your contact list,
an icon will blink next the sender's name (a message icon or a broadcast icon).
When you double click their name, their message to you, or their broadcast message
will be displayed, at which point you can reply or close the message.

You can send a message to everybody who is online at the same time. This is an option on the
right-click mouse menu called "Send broadcast".

You can send a message to someone who is offline exactly the same way you would with someone
who is online, and they will receive it as soon as they next log on to LTC.

User Status

By pressing the Status button and selecting a status, you can change the icon displayed next
to your name in everyone else's contact list. Your status icon is shown at the top right of your LTC window.

User names and Passwords

User names and passwords are used to protect all accounts.

Multiple Logons

You can log on to LTC as many times as you like simultaneously. All your clients will stay synchronised
- if you read a message on one of them, it will disappear from all the others. If you change your
status on one, all the others will update. This makes no difference at all to other people's contact
lists, you still only appear once.

No Message Loss

Since messages are kept on the server, no message can ever be lost due to the computer crashing,
you logging off, or you quitting the client or Windows. All your messages will reappear when you
log on the next time.

Message alert sounds

You can configure the client to play different sounds, the same sound or no sound when you get
a message or a broadcast. The client can also repeat the sound (or a different sound) every 40
seconds or so if you don't answer the message. If a box is empty, the client will not play a sound.
See the image of the options screen to the right.

Client runs on any version of Windows

The client has been tested on Windows 95, Windows 98, Windows NT 4 and Windows 2000.

Server runs on any version of Windows

The server has been tested on Windows 95, Windows 98, Windows NT 4 and Windows 2000.
This does introduce a security risk though if run on a user computer - the passwords are stored
in a file with the server. They can be read by whoever runs the server. For this reason,
it is recommended that the program be run on a secure server computer, although this is not necessary.

Uses Standard TCP/IP Networking

The system uses the standard Internet Protocol UDP. This means that the clients can be run anywhere
that has TCP/IP contact with the server computer. This includes across the Internet. Although
this has not been specifically designed in it does work, but if you have a slow connection
to the server you may have to be patient with the client.

Network Traffic Is Obfuscated

Although the algorithm used to obfuscate all the network communication is very simple,
it does prevent casual network sniffer programs from displaying all messages and passwords.

Works across subnets and LAN segments

No network broadcasts are used so the system can work just as well through as many bridges,
gateways, and routers to get to the server as you can set up.

Administration functions

Administrator users can change details of other users, reset passwords, kick users, delete
accounts, send system broadcasts and shut down the server remotely.

It's free!

LTC is released under the terms of the GNU General Public Licence which means you can download
and use it for free.

Installation

In the zip or tar.gz file you will find client and server directories. Windows compiled binary
programs are available in these directories. The client will run on its own from anywhere with
no further installation - though you might have to specify a location to save an ini file to it
on the command line if you don't have write access to where it decides to save its file.

The server is very similar, except that you must make sure that a folder called "userdata" exists
in the current working directory when you start the server.

Source code for the client can be found in client/src ready to use in Visual C++ 6 or compatible.
Source code for the Windows version of the server can be found in server/windows (also server/common
is used), and is for Visual C++ 6 or compatible. Source code for the Linux version of the server
can be found in server/linux (also server/common is used) and compiles with simply "make". It
compiles fine on my Debian woody system, it has compiled in the past on various versions of
Red Hat and I would expect it to compile on any Linux system (maybe even any POSIX system?) with
perhaps minor modifications to header files. One other thing though, it will only work on little-endian
systems.