What is an fserve?
An fserve is a file server found on IRC which allows other users to download shared files from the server's hard drive over DCC. As opposed to XDCC file servers, fserves are controlled by DCC Chat sessions, rather than using /msg commands. This allows them to typically be more feature-rich than XDCCs, at the expense of complexity.

How do I use an fserve?
The first step in using an fserve is of course finding one. This can usually be done by typing the command !list to the IRC channel that you are in, which generally cause all fserves in the channel to send /notice messages to you containing their details. Of course, it is a good idea to check the channel rules before doing this, as in some channels do not permit the !list command. If you are not sure, type !rules first, which by convention will /msg or /notice you the channel rules. Also, one other command normally supported by most (but not all) fserves is @find, which is a search function. Use it by typing "@find search-term" to find all servers with files on them including that search term in their name.

Anyway, once you've done that you will be deluged with fserve information looking a lot like this sample which was taken from an actual fserve on IRC (with the names changed to protect the guilty):
<Fserve Active> - Triggers:</ctcp tim|serv !music & /ctcp tim|serv !movies> - Sends:<1/1> - Queues:<2/100> - Record CPS:<10.2kB/s by iambob> -Bytes Sent:<13.05GB> - Files Sent:<70> -Accesses:<597> - Upload Speed:<5.7kB/s> - Current Bandwidth:<5.7kB/s>
Now, most of this is fairly self-explanatory, the main things to pay attention to are:

  • Sends: This is how many concurrent file sends the fserve supports at one time, and how many are currently being used. If the first number is lower than the second, there is a free send slot, and you will not have to wait for your file.

  • Queues: Normally there will not be a free send slot, so be sure to look at the queue length before hopping on. Obviously enough, the lower the number, the shorter the wait generally.

  • Upload Speed: As the name suggests, this is the maximum speed that the fserve will send to you, so unless you're a dial-up user, you'll want someone with a high bandwidth here.

  • MinCPS: This is not always found in these fserve advertisements, and not all fserves have a minCPS. However, for those that do have one, a minCPS is a lower limit on how fast your send must be going, measured in bytes per second. If you drop beneath this limit, you lose your send. Therefore, if the minCPS is 6000, then there is no point using the fserve if you are on a dial-up connection.

  • Triggers: If the other information is to your liking, the triggers are what you use to access the fserve. In the above example, you would gain access by pasting either "/ctcp tim|serv !movies" or "/ctcp tim|serv !music" to the channel, depending on what you wanted. Once you had done that, the fserve will start a DCC Chat connection with you, which will open in a new window in your IRC client.

Once you are connected to the fserve, you can browse it in much the same way as you would use a DOS prompt or text-based FTP client. For those not used to either of these, the following are the main commands:

  • dir/ls: gives a listing of all files and directories in the directory you are currently in. Using dir is preferable, since it will also tell you the sizes of the files.

  • cd directory-name: changes the directory to the one given in the command. To go back from this, use the command "cd ..".

  • get file-name: enters you in the queue to get a certain file (or if there is no queue, sends it immediately).

  • sends: gives detailed information, including file sizes and speeds for all files the fserve is currently sending.

  • queues: gives detailed information, similar to sends, but with regards to files waiting in the queue.

  • clr_queues: if you decide you do not want the files you queued, you can delete them from the queue using this command.

  • exit: leave the fserve. You can also do this by simply closing the window the DCC chat session was in.

Once you have done this, simply wait until you have reached the front of the queue and the fserve will send your file to you, as long as you are still in the same channel as the fserve.

How do I set up an fserve?
Personally I use sysreset (http://www.sysreset.com) for my fserve, so that is what this explanation will cover. However, there are many other fserve scripts, such as UPP, Excursion or Invision which you could also use.

The first step is to download sysreset from the above site. The of course install it to whatever directory you like, and run the mirc.exe which it installs. This is actually a normal working copy of mIRC in every way, except that it has an additional menu labelled "SysReset" for the fserve options.

Once you are in this, go into SysReset->File Server Manager and then go into server config. Here you can set all the details of your fserve, such as the number of sends, queues, and minCPS. Fill it out however you prefer, as your ideal settings will vary depending on your connection speed. When doing this, be sure to fill out the ad message, as this will appear in your fserve's reply to the !list command, so it is usually best to give a brief description of what you are serving. Once this is done, click on the File Server Triggers tab, and click add. Follow the prompts, and point sysreset at the directory you want to share on the fserve. Note that this will also share all subdirectories, so be sure there's nothing in there you don't want shared. If you want to share multiple seperate directories, you can do this by adding more triggers. Generally it is best to also check the box labelled "/CTCP Trigger", for each of your triggers as well, since doing so allows people to access your fserve without actually printing any text to the channel you are serving in, which of course keeps things neater.

Once you have done all that, you are now ready to begin serving. Simply go into SysReset->Servers Active, and click "On". Congratulations, you have now set up an fserve, though it is of course a good idea to get someone to test it for you, just to make sure it is indeed working correctly.