Whiteboard
Description
This tool came to be out of a need for a simple networked cross-platform whiteboard style application. My friend buub0nik and I love to design at a whiteboard, but live in different cities so whatever we do has to be online. There are a few decent Flash-based multi-user drawing websites, but nothing that really captured our attention. We decided to make our own since neither of us have done much network coding. We worked on separate clients and servers, each using a protocol we designed together beforehand, with the hope that our finished projects will be able to communicate seamlessly.
Downloads
win32 binary : here
source: here
Controls
One person needs to run the server script. The port is 12345.
Left click - draw with the current brush in the current color
Mouse scroll - change size of brush
Hold CTRL - bring up color selection. Hover over the color you want and release CTRL. The color under the mouse cursor will be the new selected color
Hold ALT and draw - draw with a circle instead of a square
Text - to use text just start typing
ESC - disconnect and exit
Postmortem
I chose to use enet for UDP communication. I had always thought UDP was very unreliable. In my tests though, even when two people on different ISPs and far apart, packet loss was less than 5%. This is acceptable in the whiteboard app since a lost packet just means a handful of dropped pixels. The initial protocol design was pretty bad, and resulted in something like 100k/sec upstream on the server when the user scribbles quickly. I finally got the upstream usage to around 5k/sec by doing as much grouping as possible, and compressing the resulting packet with zlib.

