Introduction (Or: The problem)
If you are a member of a project you know that from time to time some
brainstorming or technical discussion is necessary. This is quite easy if you
and you members are located in the same building or at least in the same
city, but gets much more complicated if the distances are much further.
Of course, you can phone each other and today instant messengers are heavily
used for those purposes. But if you need a small drawing or a sketch to
explain something, things get difficult. You may need to mail you sketches
around or put it onto a webpage, but this strategy reduces interactivity.
This is where NetworkSketchpad enters the stage.
A solution (Or: What NetworkSketchpad can do for you)
NetworkSketchpad is a simple vector drawing program. This means, you create
drawings by placing drawing primitives such as lines, rectangles, dots, etc.
onto the virtual sheet of paper. To use the networking capabilities of NetworkSketchpad,
you need to connect to a NetworkSketchpad server. Having done so, all elements
you place onto the drawing are sent to the server which distributes the
information to the other clients. Every object you place will appear on the
other clients too in (nearly) realtime. But not only you can draw, all
clients can draw concurrently.
License
NetworkSketchpad is licensed under GPL.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
Getting started
At first, you need to get it from sourceforge. You will need at least the
package called nwsketchpad_client. This is enough if you don't want to use
the networking features (well, it gets quite useless without networking) or
if someone other runs a NetworkSketchpad server to which you can connect.
To run the software you need the Java Runtime Environment (short: JRE) installed
and you need at least version 1.5.x. (The 1.4.x versions work too, but
you'll need to recompile the class files.)
After downloading the client, extract it somewhere. To simply try it out,
you can run the batch file called 'run_local.bat'. This will run the
NetworkSketchpad in local-only mode which is enough to play a bit with it.
If you run 'run_ask.bat' instead, it will pop up a window where you can
enter the IP or hostname and port of a server (needed to use the
networking features).
If you wish to try NetworkSketchpad before downloading and have a
Java-enabled browser, you can click here to try it as applet.
Keep in mind, that it will work only in local-only-mode (you can't share
drawing with other clients) because there is no public sketchpad-server.
Additionally some features (such as loading and saving) are not available
in Applet-mode.
The basic UI
The main window looks like:
On the left side, you can see the drawing objects which can be placed.
The right side shows buttons for the most important functions:
- Retransmit: Retransmits the whole drawing to the server. Click it if a
client joins later and doesn't have the whole drawing, yet.
- Color: Pops up a color-chooser-dialog where you can select the current
drawing color.
- Clear: Clears the drawing (local only, the other clients won't be
affected).
- Exit: Exit NetworkSketchpad.
The area which shows The NetworkSketchpad V0.25 in the picture
will show the extended attributes (like size, shape, ...) if you select a
drawing object in the list which has such a capability.
Above this area there are 2 JSpinners with which you can alter the drawing grid
in pixels. If the checkbox on the right of the second JSpinner is checked,
the raster will be displayed onto the drawing, but only if the raster size
is greater than 4.
The Menu
- File
- Save: Save the drawing
- Load: Load a drawing. This will load the drawing onto all other connected clients, too.
- Save as PNG: Export the drawing in PNG format. (Which can be opened by other image manipulating programs.)
- Exit
- Drawing
- Color: Change current drawing color. Same as the button.
- Clear: Same as the clear button. Clear drawing.
- Retransmit: Same as the Retransmit button.
- Object browser: Show the object browser in which all objects which have been drawn yet can bee seen. With the object browser, you can change the drawing order of the object or delete single objects. But keep in mind, that all changes made via the object browser are local only.
- Extras
- IM Window: This opens the window of the integrated instant messaging function.
Running a server
The simple way to start the server is to run the batch file called
'run.bat'. This will start a NetworkSketchpad server listening on port 10000
to which clients can connect.
You should note, that the server doesn't support what is called 'rooms'
when talking about chats. This means, that all clients connected to one
server [task] will share one drawing.
What's new (Or: Where's the news?)
This webpage is only a basic introduction and new features won't be annouced
here if they don't concern the basic usage (or how to get started).
Detailed information about the changes is provided in the CHANGES section in
the readme file.
Command line syntax
NetworkSketchpad client
To run the client via command line, use:
java sketch_gui [server] [port]
Server and portnumber are optional, but if one of them is missing, the client
will pop up a window where you must enter connection information. If the
client cannot connect to the given server, it defaults to the 'local only
mode' and nothing will be send over the network. This mode can be used to
prepare drawings for later usage in a networking session.
Starting with Version 0.26, the NetworkSketchpad client has its own
configuration file (nwskpd.cfg) in which some basic settings can be altered.
Detailed information about the possible configuration parameters are
provided in the configuration file itself (via comments).
NetworkSketchpad server
To start a server thread, you can use:
The port number is mandatory. To stop the server simply kill its task or
"CTRL-C" it. The server has no connection number limit and all data sent
to it by a client will be forwarded to all other clients (but not the sender
itself).
Since Version 0.04 the parameters are:
java sketch_server port_min port_max [nobuffer]
The server will listen to ports ranging from (including) port_min to
(including) port_max. A seperate drawing is hosted on each port.
The nobuffer option is optional and disables local buffering.
Please read the readme file for details on that. (Really, read it as it is
security relevant, too.)
Important notes for NetworkSketchpad 0.3
Beginning with version 0.3 of the NetworkSketchpad client,
MD5-Authentication with the server is supported. The only drawback of this
is, that the Java-Server is no longer supported, you have to use
the C-Server (sketch_server_auth to be precise). The reason is that
I don't have time to implement everything twice (in the C-Version and in
the Java-Version). I decided to stop development of the Java-Server, because
the C-Server is more portable. ("That's not right! Java is platform
indepentdent!" I hear you scream. Well. You are right. But only as long as
you have a JRE whereas ANSI/POSIX C runs on nearly anything. The C-Server
for exmaple can even be run on linksys routers.)
Clients > 0.3
The command line parameters are exactly the same as before. There's no
need to change anything.
C-Server with authentication
Start it with:
sketch_server_auth listen-port auth/noauth pwdfile [bufferfile]
port is the port to listen on. Either auth or noauth
have to be given. If you supply a bufferfilename, it will buffer the
drawings, as usual in the older version.
The Password file has the following format:
Username0 password0
Username1 password1 # Comment
The Username-length is limited to 31 characters. The passwords are cleartext
(They get MD5-hashed upon load) and may have an arbitrary length but the
total line length must be below 80 characters.
Written and Copyright (C) 2006, 2007 by Wiesner Thomas
EMail: w15mail (at) yahoo.de