Why did I write GetSmart ?
After surfing the Net for a couple of years I got frustrated that there wasn't any
program that I could gave it some files to download and be sure it will. I tried many of
those softwares, each promising that it will be reliable and nothing will stop it until it
got the files I needed. This was very promising, but whenever I set one of those programs
to do some big downloads and went to sleep, I can't recall one case in which I got up and
everything was right. Even though I had only experience in programming for DOS in Pascal,
I've decided I could not accept with the situation and that I was gonna make a program
which will answer all my needs. I got a book about C++ and bought one about WIN32
programming, and with one book on each hand, I started programming GetSmart. This is
actually my first Windows application I program.
What is different in GetSmart ?
The main idea behind GetSmart is the split option which I will now describe.
Every usual program when received a URL to download, uses one task for each. It takes
the URL you have given, connects to the server and starts downloading the file. If the
rout to the server is jammed this can result in a slow transfer and there's not much those
programs will do about it.
GetSmart in contrast to other programs uses more than one task for each download. If
you see that you get a slow transfer, you can use GetSmart to split the download into
smaller parts (up to 6 parts) and then it will download them simultaneously. if for
example you have splitted the file into 3 parts, it will have three different connections
to the server, and each connect will transfer one part of the file. For slow connections
it can significantly increase the speed (using 6 parts with a server of which connection
to is real bad, can increase the speed by up to 5 times than using one connection). So if
you got 3 connections, the download has now 3 tasks bonded to it and you will see in the
small download window "tasks: 3". You will also have a button "show
tasks", which will then show you instead of one small download window, 3 download
windows, each represents a different part of the file which is being downloaded.
Starting a download
You can either start a download by entering it's url in the "Enter URL"
dialog box, or you can copy it from the Clipboard. GetSmart by default will detect URLs
from clipboard, and if the file's extension was defined in the configuration (under
"URL extensions to catch"), it will automatically be added and started. If the
extension was not defined and you still want to download the file, you can use the pull
down menus, or press Shift+INS, which will add the URL even if it has an unknown
For the novice users I'll just say that all you have to do is right click the URL you
want to download and choose copy link to clipboard, and GetSmart should start downloading.
Entering a URL
There are two different ways to enter a URL. You could use the URL edit box to enter a
complete URL. This will automatically update the other edit boxes, for example:
- By entering that in the URL edit box, GetSMart will update the others so they will
- Host: members.xoom.com
- Port: 80 (that's the default port for an HTTP URL)
- Dir: /m507/GetSmart.exe
- Protocol: HTTP
You can also enter in the URL Login, Pass and Port for example:
- Login: ehuds
- Pass: unknown
- Port: 31
- Dir: /m507/GetSmart.exe
- Protocol: FTP
The second way is to update each edit box separately. In this case GetSmart will update
the URL edit box automatically using the info you write.
- Host: this should contain only the host (either words separated by a
dot - members.xoom.com or an IP number - 218.104.22.1683 ). It should NOT have anything
else like http:// ot ftp://.
- Port: This is the port number.HTTPs usually using port 80 and FTPs port
- Dir: This should contain the server's directory and filename you wish
- Login and Pass: your login name and password
- Protocol: There are two main protocols which are used to transfer files
in the Web: HTTP and FTP. You should choose the correct protocol for the download
- URL: This area will be updated automatically. In any case that there's
a difference between the URL edit box and the other edit boxes, what will count are the
separate boxes and not the URL
Local download directory
This is where GetSmart will put the files it downloads. You can change in the
configuration the default download directory. GetSmart for now will NOT create a dir by
itself nor it will check for existence so make sure the dir is correct.
Wild cards and FTP browsing
Using wild cards as the filename or not specifying any dir and file, will let you
browse the FTP. You will get a list box with the filenames and directories of the server.
You can then choose files and add them to GetSmart's queue, or you could change the
server's directory and get a new list of the new directory.
GetSmart will have a complete FTP client, this is being developed.
The download box
This is the download box. It contains information about the file and some options:
Tasks: This button shows how many tasks are used on this download.
Pressing on it will display the task manager (will be explained later);
Hide: This button will hide the download manager. It will still
continue the download. To Unhide it, you can double click on the main menu, or use the
task manager (will be explained later);
Console: This will show you a console with the FTP or HTTP
negotiation, and some more info;
Split: This will split a download (read about it in "What is
different in GetSmart" the second topic. This is the main option of GetSmart). It
will show a dialog box which will allow to choose how many parts to split the file
(minimum of 2, up to 6).
* The split option will only be available if the server supports
resume. When starting a download, the split option will be disabled, until GetSmart
will figure up if resume is possible;
Ping: This will show you the ping time to the server of which you are
downloading the file from. It will also ping to increase the speed, every 4 seconds of
download box of a splitted session
There isn't much of a difference. The info here is taken from all the task windows of
this download and gathered together.
Tasks: Shows how many tasks are used for this download;
Show Tasks: This will show instead of 1 window, which gathers info
from the other tasks, every task window separately. In this case we'll see 4 different
windows, each represents one part of the file being downloaded. Pressing this button again
will hide those windows and will again show only 1.
Split: This button is now disabled. You can't change the split number
when already started (you can however decrease the task number to use less tasks for the
download - next topic).
The Task Manager
This is the task manager. In this example I'm downloading GetSmart.exe using split of 4
parts. You can see in the split slots that 4 places are taken and 2 are unused. Each line
gives you detailed information about a task. You can see the name which includes the
starting and end bytes of any part.
Hammer tasks: Whenever GetSmart find a busy site, it will launch 4
more tasks which will also try to enter that site. The first task which will log in, will
be used. Every hammer tasks is also included as a normal task and will be added to the
task number in the download window.
Show/Hide task: This will show or hide any selected task (you can
select more than one tasks using Shift/Ctrl and mouse click);
Pause/Resume task: This will allow you to pause and resume specific
tasks. In every download there is a main task (usually the first part of the file. This is
the download window which have the "show tasks" button and shows in
"tasks:" the whole tasks number). Pausing it will automatically pause the whole
download and close any task (Split / hammer).
If you will however pause a task which is not main, it will pause alone. When a task
has been finished, it will check for paused tasks and will automatically resume one of
them. If you have started a download and splitted it to 4 parts and now you want to
decrease the task which are used for it, you can safely pause the last two tasks and
whenever one of the running tasks is finished, it will start one of the paused tasks).
Integrity check / crash recovery
If GetSmart / window has crashed on the second GetSmart tried to write data to your
local file, there's a chance that it won't be able to do it right and your local file may
contain some corrupt data in it's end. To solve that, whenever GetSmart resumes a file, it
will compare the last bytes of your local file to the server's file, and will recover if
there's a difference.
If you lost the entry of your download in the main menu, enter the URL again with the
same download directory. GetSmart will detect that the file exists and will offer to
resume it (it will also detect a split download and will resume it correctly).
This option is available from the advanced pull down menu. It will start
downloading automatically the files that are queued in the main menu. You can change how
many files GetSmart will download simultaneously from the configuration box. When this
option is enabled and GetSmart encounters an error. It will count 5 minutes and will try
it again. If you have also chosen the disconnect when done option GetSmart will retry each
error up to 5 times and then disconnect.