Releases: Arc676/SockTalk
Version 3.0
The SockTalk protocol has received several improvements, some inspired by the Swift implementation. The protocol now supports kicking and banning users by IP address. Additionally, a timeout period has been added to drop connections from new users that can't provide a username within 5 seconds (a sign that the protocol is being violated). Usernames can't contain spaces (as a measure against impersonating reserved names).
Version 2.1
With Version 2.1, SSL encryption is now optional. You probably shouldn't use un-encrypted connections for any sensitive information, but if you want plain text communication for whatever reason, now you can.
Client registration is now asynchronous, so clients failing to send their desired username for the registration process no longer block other clients from connecting.
Compatibility notices
- If either the certificate file or key file is left unspecified, SSL will be disabled. Servers and clients using versions 1.5 and 2.1 can connect to each other if SSL is disabled.
- Due to changes in username handling, communication between versions is not handled properly. Determining the source of a message is now handled by client handlers, so the clients don't prepend their usernames to messages. Old servers will not be able to see the source of messages sent by v2.1 clients. Servers on v2.1 will see repeated usernames when old clients send messages.
Version 2.0 (Prerelease)
The SockTalk protocol now uses OpenSSL to encrypt communication. Additionally, messages are now categorized by their type (INFO
, MESSAGE
, ERROR
) so the frontend can better handle different kinds of message.
Compatibility loss
Servers and clients running v2.0 are not compatible with those running 1.5 and lower because v1.5 and lower do not use SSL.
Version 1.5
SockTalk is now a library!
In the lib
folder you will find the source code for the SockTalk library. In the stclient
(SockTalk Client) folder you will find the source code for a command line IM program that uses the library. This program has the same functionality as v1.0.1 and should be completely compatible with the previous version as no changes were made to the underlying protocols.
You can also use the SockTalk library to implement your own IM applications that are SockTalk-compliant. Simply #include
the necessary classes, override the necessary methods, and let the library handle the rest. You can focus on building the interface and/or other features and leave the networking to the library classes. This also means that any application you create will be compatible with any other program using the same library.
Version 1.0.1
This release is compatible with older C++ compilers. I haven't included any binaries; compile it for your own architecture using the Makefile
(using make
). Remember that you might have to change the compiler specified in that file if you aren't using gcc
.
Once it's compiled, run server
to host a chat and client
to join a chat server.