XFT – Xmlrpc File Transfer and Chat

Author: Graham Chiu
Date: 25-June-2004, 26-July-2004
Version: 0.5.6


1. About

XFT is a combined server/client application that allows one to both serve and receive files using xmlrpc based calls for communication, and async i/o for file transfer.

2. Credits

The utility is written in Rebol and uses the xmlrpc libraries written by Andreas Bolka, the async protocol written by Gabriele Santilli, Maarten Koopmans, and Romano Tenca, and the async-call by Nenad Rakocevic. Thanks also to Volker Nitsch for help with the async protocol, and to Chris Ross-Gill for the XP image stock.  The chat client uses GLayout from Maxim Olivier-Adlhoch.

3. Download

The current beta can be downloaded from


XFT now also requires the Firebird ODBC drivers to enable chat.  Choose the latest beta drivers from

Firebird ODBC

and just install.

4. Usage

4.1. Command line options


launch client


launch server


The server checks for an updated version of XFT.  You can stop this by using this option.

[ -l | nolookup ]

when client launches, do not contact lookup server ( useful for lan )

[ -x | nobroadcast | silent ]

when server starts, do not broadcast IP address ( useful for lan or private servers )


Makes the server private so that clients have to enter userid and passwords


Leaves the server in public mode which does not require userid and passwords

[ -d | dir | share ] <directory>

eg: share %/d/shared/ sets the shared directory on the server to d:\shared

[-u | user ] <username>

eg: user Carl sets the user name to Carl ( this is the name shown when your server details are broadcast )

[ -p | port ] <port number>

eg: port 8080 sets the server port to 8080

[ music | mp3 ] <filename>

eg: music %music.txt will use the contents of the music.txt file which is in the same directory as the xft.exe binary for the command line arguments for the mp3 player

direct <ipaddress>

eg: -client direct will invoke the client and connect directly to the specified ip address and port

smtp <smpt.host.name>

Sets the smtp host used to send email ( sends out registration details )

name <"your name">

Email sent out will have your name appended to it

email <[email protected]>

Email sent out will have this as the sender’s email address.

5. Configuration File

If a file named “config.txt” is found in the same directory as XFT, and there are no command line parameters, then the file contents will be treated as though they are command line parameters.

NB: A configuration file with these settings can be dragged and dropped onto the XFT binary to start it up with those settings.

Eg: -server port 8080 user Carl nobroadcast share %/f/shared/ -client nolookup music %/d/music.txt

6. Server


[H] button invokes your browser and brings up this help file at the XFT home page.

Clicking on the ”..”at the end of the Shared Directory field brings up a directory requester when you can select which directory you wish to share.

The Kb: field allows you to enter the blocksize used for file transfer.  250Kb means that the file requested by a client will be sent in 250Kb blocks.  However, the client can request a smaller blocksize.

Enter the username you wish your server to be known by.  Note that if this username is being used by someone else, you will have to change it.

Enter the server port number.  It defaults to 8001 (and 8002).  If you are behind NAT or a firewall, you will have to configure them to allow these ports to be opened.  XFT requires both the port shown and the one above that. With NAT you have to configure the router to forward tcp packets to the IP address of your PC running the server.  Consult your router manual on how to do this.

TEST checks to see if your server is accessible from the internet.  You have to start the server for this test to complete.

Current Action shows the current request being processed by the server, and some error messages.

Ping Status The XFT server updates the lookup server every 4 mins to let it know it is still available.  Otherwise your server will be removed from the lookup server tables.  This line shows when you last contacted the lookup server.

Private Checking this will require connecting clients to enter a userid and password.

Start Server Starts the server.  If it can’t start, an error message appears.

Quit Server This button is the alternate face of the Start Server button. It halts the XFT server, removes you from the lookup server if you were registered there, and then closes down XFT.

silent If you are running on a LAN and only want LAN connections, or don’t wish to broadcast your address, then check this box.

i Brings up a list to show you what files you are currently sharing. The server must be running.

+ Brings up a file requester to allow you to add a file to the shared directory

? Shows you what files are currently being cached in ram.  All files being transferred are cached in ram, and then removed if not accessed within 4 mins

r Allows you to deal with any requests for accounts. See Manage Requests below.

s Shows all current sessions.

x Clears the log history from the screen.

Reload files If you change the shared directory, or add a file, you need to reload the files to generate new MD5 checksums. If you don’t do this, the clients won’t see the new directory or files.

C This launches the client.  The client can also be launched with the -client command line option.  If the “silent” checkbox is checked, the client will not contact the lookup server.

6.1. Manage Requests

[ Image ]

This window allows you to manage the requests for accounts on your private server. The top window shows the raw data in the requests.r file.

The fields: smtp server, my email, and from, are set by command line parameters ( see above ).

The remaining fields above the buttons are taken from the submitted request.

The buttons Previous will allow you to go backwards over the request data, Next forward, Approve a request, Email It approve a request and send confirmation email, Delete just deletes the request, and Save Changes saves the requests.r file with the new data.

Actual user data is held in a file ”users.txt”.

When you approve a request by email, you can also fill in the Response field which is sent as well.

You can also add users by filling in the fields yourself.

If you leave the password field blank, and approve a request, then the system will generate a random 8 character password for you.

The Search field is used to display an existing user, but you can not manage this user with any of the buttons.

7. Client

7.1. Available Servers Window


Unless the client is lanched with the -l ( or nolookup) option, it contacts the lookup server and displays which ones are available. Clicking on the IP address of the server contacts the remote XFT server, and requests a directory of the available shared files.

You can also type in the address of a server, and it is in the same format as remote server ip addresses including the port address.

You can also use a hosts file which will be read by the client at start up.  If your hosts file looks like this Graham

then typing Graham in the field will also work.  click on Direct Connection to request the shared file directory.

Note that if you have already connected to a server, then clicking on the same or another server will invoke another instance of the client.  This allows you to setup multiple concurrent downloads.

On connection, if the server has an “about.txt” file, then this will be displayed.

If the server is a private server, you will be prompted for your username and password. If you check the “save password” then these fields will be filled in automatically next time.  If you don’t have an account, and require one, then use the “Request Account” button and fill in the fields.

7.2. Remote Directory window

Shows a list of the available files from the remote XFT server.  clicking on the file name brings up a file details window.

7.3. Local Directory Windows

shows a list of the files in your current download directory. If you click on a music file, XFT will try to bring up your configured music player and play the file.  A DOS window pops up which can be minmized. If the file is an image file, it will be displayed. If it is a .txt file or a .r file, an editor will be invoked.

7.4. File Details


Allows you to download a file, resume download if you already have part of a file, and abort the current download. Clicking on the file name will attempt to play a music file, view image file, or edit a text file.

It is always a good idea to virus scan any potentially executable files after downloading.  This is particularly true for XFT as it downloads files in packets and may well prevent virus scanners from picking up infected files.

The Music Player Parameters are set by using the music command line option.  The default settings are for a jlGui, a java music player which accepts command line arguments.  clicking on the “?” will take you to it’s home page where you can download it.

The “..” brings up a file requester allowing you to change the download directory.

The slider adjusts the blocksize of packets being sent by the server.  It can only be set to the highest value allowed by the server that you are currently connected with.  It should be set to high values for LAN file transfer, and small values for internet file transfer.  You may need to experiment with this to get the best values for your circumstances.

8. History

0.5.6 6-August-2004 chat debugged, private chat sessions, public chat

0.4.5 25-July-2004 various updates including private servers, session management, users management, patch updates, and various fixes.

0.3.5 21-July-2004 autoupdate flag – server checks for new version on startup, use a configuration file

0.3.4 20-July-2004 tests server’s data port before attempting download

0.3.2 19-July-2004 redisplays the md5 on download completion

0.3.1 18-July-2004 async client released

0.0.1 25-June-2004 first public release