- 1. What is the Catalyst File Transfer control?
The Catalyst File Transfer control is an ActiveX control which provides comprehensive
file transfer functionality via FTP or HTTP to your applications, as
well as secure transfers using the HTTPS, FTPS and SFTP protocols. The File Transfer
control is a single component which implements the standard protocols for downloading and
uploading files, as well as remote file management capabilities supported by those
protocols. The File Transfer control is a single component which makes development and
deployment significantly simpler, not a repackaged collection of controls. The control was
built on the foundation of the SocketTools core libraries, offering the same stability and
features using a new, streamlined interface.
- 2. What are the minimum system requirements?
The Catalyst File Transfer control is a 32-bit ActiveX component which
requires Windows 2000 or later versions of the Windows platform.
The minimum memory and disk space requirements for end-users are the
same as for the base operating system. The following table lists the
minimum operating system versions required:
| Operating System |
Minimum Version |
| Windows 2000 |
5.00.2195 |
| Windows XP |
5.10.2600 |
| Windows Server 2003 |
5.20.3790 |
| Windows Vista |
6.0.6000 |
| Windows Server 2008 |
6.0.6001 |
| Windows 7 |
6.1.7600 |
For Windows 2000, it is required that Service Pack 4 (SP4) be installed. For Windows XP,
Service Pack 2 (SP2) must be installed and Service Pack 3 (SP3) is recommended. It is
recommended that developers using Windows Vista install Service Pack 2 (SP2).
Developers can use the control in any language which fully supports the ActiveX control
specification and/or COM objects. Visual Basic 6.0, Visual FoxPro 8.0 and Visual C++ 6.0
are the minimum versions of the Microsoft Visual Studio languages which are supported.
- 3. Are there multiple components in this product?
No, the Catalyst File Transfer product consists of a single ActiveX control and
includes everything that is needed to upload and download files, and to perform remote
file management for FTP. This is not a collection of repackaged SocketTools controls but
rather a completely new component designed to make it even easier to incorporate file
transfer functionality in your applications. Although based on the core networking and
protocol libraries in SocketTools, the File Transfer control is a different product line
and sold separately from SocketTools.
- 4. What is the difference between this product and SocketTools?
SocketTools is an extensive collection of ActiveX controls and libraries which
implement a variety of Internet protocols. Designed as a general purpose Internet
development toolkit, each component is designed to provide support for an individual
protocol or standard. If the design of an application calls for file transfer, the
developer must make the choice between FTP and HTTP at design time.
On the other hand, with the File Transfer control, that decision may be deferred until
runtime. In addition, the interface for file transfer is both more unified and simplified
in comparison with the corresponding SocketTools components. This reduces the amount of
time being spent incorporating and testing the application's file transfer-related
features, allowing the developer to focus on the core application code.
SocketTools is an excellent product for those developers who need a powerful,
comprehensive toolkit with lower-level support for a wide variety of Internet protocols.
However, those developers who just want to add file transfer functionality to their
applications without writing a lot of code or redistributing multiple components will
prefer the Catalyst File Transfer control. Those developers who are currently using
SocketTools can also use the File Transfer control in conjunction with other components
and/or libraries in SocketTools.
- 5. Can the control be used with Visual Studio 6?
Yes, the ActiveX control can be used with Visual Studio development tools such as
Visual Basic, Visual FoxPro and Visual C++. The product includes example programs and the
documentation includes additional reference material specifically for Visual C++
programmers who wish to use the control in their projects. Scripting languages such as
Visual Basic Script are also supported, and the control can be used as an object in
server-side scripting environments such as ASP.
- 6. Can the control be used with Visual Studio .NET languages?
Yes. The File Transfer .NET Edition includes managed code classes written
specifically for the .NET Framework and can be used with either Visual Studio 2008,
Visual Studio 2005 or Visual Studio .NET 2003. The ActiveX control in the
original File Transfer Control can also be used with Visual Studio .NET through a COM
interop wrapper, however there can be a significant performance penalty
when using ActiveX controls in a managed code application. It is
recommended that developers who are programming using Visual Studio .NET
upgrade to the File Transfer .NET product.
- 7. What standard protocols are implemented by the control?
The control implements the File Transfer Protocol (RFC 959), which is used for file
transfer between a client and a server, and for remote management of files on a server.
The Internet draft document "Securing FTP with TLS" describes a mechanism that can be used
by FTP clients and servers to implement security and authentication using the TLS protocol
defined by RFC 2246 and the extensions to the FTP protocol defined by RFC 2228.
The control also implements portions of the HyperText Transfer Protocol. RFC 1945
documents Version 1.0 of the HyperText Transfer Protocol (HTTP), and RFC 2616 documents
Version 1.1 of the protocol. These standards govern the communication of client
applications such as browsers with web servers. The File Transfer Control implements the
GET and PUT commands of these standards.
- 8. Does the control support secure connections?
Yes, the control implements three standard security protocols: Secure Sockets Layer
(SSL) versions 2.0 and 3.0, Private Communication Technology (PCT) version 1.0 and
Transport Layer Security (TLS) version 1.0. The Secure property determines
if a secure connection is established. There are a number of related properties which
return details about the certificate and encryption used. Refer to the technical reference
documentation for more information.
- 9. Does the control require any third-party libraries?
No, the control is completely self-contained with no dependencies on third-party
libraries or Microsoft support libraries.
- 10. Does the control use the Microsoft WinInet library?
No, the control does not use Microsoft's proprietary WinInet library to establish
secure connections. It is not required that you redistribute this library with your
software unless you make use of it elsewhere in your application. The control uses the
standard Windows Security Support Provider Interface (SSPI), which is modeled after the
Generic Security Service (GSS-API) interface outlined in RFC 2078.
- 11. Are there any royalties or runtime licensing fees?
No, there are no runtime licensing fees and there are no restrictions on the number of
products that you can create using the Catalyst File Transfer control. Applications
created using the control may be redistributed to any number of end-users.
- 12. Is there an evaluation copy of the product available?
Yes. If you choose to install the product without a serial number then it will be
installed with an evaluation license that is valid for a period of thirty (30) days.
The software is fully functional during the evaluation period, however you will be unable
to create redistributable applications using the control. In other words, you will be able
to create and test applications on the system on which the evaluation license was created,
but you will not be able to run those programs on any other system until you purchase the
product.
- 1. What is the Catalyst
File Transfer .NET class?
The File Transfer .NET class is a managed code component
designed specifically for the Visual Studio 2008, Visual Studio 2005 and Visual Studio
2003 .NET development tools. The .NET class is ideal for the developer who is
programming in Visual Basic .NET or C# on the Windows platform. It provides
an interface that is similar to the original File Transfer ActiveX control,
however it is designed and optimized for use with the .NET Framework.
- 2. What is the difference between the
.NET class and ActiveX control?
Both the .NET class and the ActiveX control provide the same general
functionality and have similar interfaces, however the .NET component is
a managed code class which use the Common Language Runtime (CLR) and requires
that the user have the .NET Framework installed on their system. The
ActiveX control is primarily designed for older development tools such
as Visual Basic 6.0. While the ActiveX control can be used with .NET
languages, they can incur a significant performance penalty. The .NET
component does not use COM interop and doesn't have the inherent performance
issues that ActiveX controls do. The .NET component also simplifies redistribution
and provides a native interface that is easier to work with.
- 3. What language was the .NET
component written in?
The File Transfer .NET component was written in Visual C#. It is
important to note that it can be used in Visual Basic .NET without any
limitations. Because it is a managed code component that uses the
Common Language Runtime (CLR), the .NET component is compatible with any
Visual Studio programming language and the interface is the same
regardless of the language being used. The product includes examples
written in both Visual Basic .NET and Visual C#.NET.
- 4. Does the .NET component
support multi-threading?
Yes, the File Transfer .NET component is thread-safe and can be safely
used in a multi-threaded application. In fact, we recommend that most
applications use a multi-threaded design with worker threads performing
the file transfers. This allows the main UI thread to remain responsive
to the user while the File Transfer component does its work in the
background.
- 5. Does the
.NET component support events?
Yes, the File Transfer .NET component supports events to notify the
application when certain actions are taken or a network event occurs.
For example, the OnProgress event will be periodically generated
during the file transfer process so that you can update your user
interface. Typically this is used to update a progress bar so the
user can see how much of the file transfer has completed. There are
a number of other events as well.
- 6. Can the
File Transfer .NET component be used with Visual Basic 6.0?
The File Transfer .NET component is a managed code class which requires
the .NET Framework and a programming language which can generate Common
Intermediate Language (CIL) bytecode. It does not expose a COM interface
and cannot be used with Visual Basic 6.0 or earlier Visual Studio
programming languages. The minimum version of Visual Studio required for
development is version 7.1.3088 (Visual Studio .NET 2003) and the
minimum version of the .NET Framework required for development and
redistribution is version 1.1.4322 (SP1).
- 7.
What operating systems are supported with with the File Transfer .NET component?
The File Transfer .NET component is designed to work with Visual
Studio 2008, Visual Studio 2005 or Visual Studio .NET 2003, and requires Windows 2000 or later
versions of the Windows operating system. Windows 95, Windows 98,
Windows Me and Windows NT are not supported. The user must have a least
version 1.1 of the .NET Framework installed on their system. If they do
not have the Framework installed, it can be downloaded through Windows
Update. If the user is running Windows XP, the Framework is part of the
Service Pack 2 (SP2) update. Windows Vista includes both version 1.1
and version 2.0 of the .NET Framework.
- 8. Should I purchase the
.NET component if I already use the ActiveX control?
If you are currently using the ActiveX control with Visual Basic .NET or
Visual C#.NET then we strongly recommend that you move to the
File Transfer .NET component. You'll see improved performance and a more
natural interface that makes the product much easier to work with. If
you're planning on migrating your application to the Visual Studio .NET
platform, many of the the properties, methods and events are the same.
Although there are some differences between the two editions in terms of
the interface, those differences are minor. Both products support the
same Internet application protocols and have the same general functionality.
- 1. What are the general terms of the license agreement?
The complete license agreement for the product can be found in the online help. In
general terms, it permits you to install a single copy of the product on your computer
system, use the product to build application software and redistribute that software to
your end-users. There are no runtime licensing fees, and there are no restrictions on the
number of products which may be developed using the control.
There are two primary restrictions, the first being that the product is only licensed
for a single developer. The second restriction is that you may not use the control to
create a software development product which is then used and/or resold by your customers.
In other words, you may use the control to build application software, but you are not
permitted to create software development components or libraries which are then used by
your customers to create software which, in turn, they distribute to end-users. If you
have any questions regarding the licensing agreement, please
contact us.
- 2. What are the limitations of an evaluation license?
The control is fully functional during the evaluation period and the same code that you
develop during the evaluation period can be compiled and used once you have purchased the
product. However, there are two limitations to consider when developing software using an
evaluation license. First, the control will cease to function after the evaluation period
has expired. This means that you will not be able to load it into your development
environment, and any application that uses the control will no longer function. Second,
you cannot redistribute any application created using the control with an evaluation
license. An application that is created using an evaluation license will only function on
the development system where the license is installed. Once you have purchased a license,
you only need to recompile your application with your new, registered license.
- 3. Is a license required for each developer using the control?
Yes, a license is required for each developer who is using the control. It is a
violation of the terms of the license agreement for more than one developer to use the
same copy of the product. However, the same developer may install the control on more than
one system as long as there is no chance that it will be used by another developer. For
information about purchasing additional licenses, please
contact us.
- 4. Does this product require activation or online registration?
No, this product does not require electronic activation or registration. We feel that
this is too restrictive for developers who frequently must develop and test applications
on multiple platforms. Although online registration is not required, it is recommended
because this entitles the developer to technical support and free service pack updates to
the product.
- 5. What is the runtime license key?
When the product is installed with a serial number, a runtime license key will be
created which is used by the control to validate that a licensed copy of the product has
been purchased. For languages like Visual Basic, the license key is managed internally and
doesn't require any additional coding by the developer. However, some languages don't
directly support the use of runtime license keys so the control must be initialized with
the license key by calling the Initialize method. The key itself is
stored in the \Include folder where the product was installed. For more information, refer
to the online help for the Initialize method. Please note that the
product serial number is NOT the license key.
- 6. Can the control be used with Active Server Pages?
Yes, the control can be used in Active Service Pages by using the function
CreateObject to create an instance of the object. The class name for the
object is SocketTools.FileTransfer. Note that the use of
CreateObject requires that the control be initialized with a runtime
license key by calling the Initialize method after the control has been
created.
- 7. Why do I get a licensing error when redistributing my application?
There are two common reasons that a licensing error may occur when attempting to
execute an application on another system. If the control was installed with an evaluation
license, then the control can only be used on the development system during the evaluation
period. Attempting to use an evaluation copy of the product will generate an error if the
application is installed on another system.
If a development license has been purchased and registered on the development system,
then it may be that the language does not support the appropriate interface to
automatically manage the runtime license key. For example, using the CreateObject
function to create an instance of the control will cause a licensing error when the
application is redistributed to another system. The control's Initialize
method must be called immediately after the control has been created, specifying the
runtime license key as one of the arguments.
- 1. Is it possible to specify a remote file name using a URL?
Yes. The GetResource and PutResource methods allow a
remote file to be specified by a URL string alone. When using these methods, it is not
necessary to separately indicate the server type, supply account information, or to
connect before the transfer request.
- 2. Is it possible to perform multiple file transfers?
When using the File Transfer control with an FTP server, you may transfer multiple files
with a single method call using either the GetMultipleFiles or PutMultipleFiles
methods. The specification of the set of files to be transferred is given using a file
mask, composed according to the wild card conventions of the local and/or remote system.
It is also possible to transfer multiple files, one at a time, following a single
connection to a server, using the GetFile and PutFile methods.
- 3. Are anonymous file transfers supported?
Yes, anonymous file transfers for both FTP and HTTP are fully supported. For HTTP downloads,
user authentication is typically not required, whereas for HTTP uploads, user authentication
typically is required.
For FTP uploads and downloads, it depends on how the server is configured. Many public FTP
servers support anonymous sessions, in which a user name and password is not required.
If a user name and password are not specified when the connection is established, the control
will assume that you want an anonymous session.
- 4. How are files uploaded using HTTP?
File uploads using HTTP requires the server to support the PUT command. This is available with most
web servers, but it is not always enabled for security reasons and you may be restricted to uploading
files to a specific directory. You should contact the server administrator to determine if it is capable
of accepting file uploads, whether authentication is required and if there are any restrictions.
- 5. If a file has been relocated, can the control find the file?
If the server informs a client of relocation by use of an appropriate response code and
"Location" response header, the File Transfer control will follow the contents of that
header to find and download the file, regardless of how many redirection links it has to
follow. However, if the server uses meta tags embedded within the body of its response to
describe a relocated resource, the File Transfer control will not follow the redirection,
and there will be no error indication.
- 6. What FTP directory listing formats are supported?
The File Transfer control recognizes and interprets the most commonly-used directory
listing formats - UNIX, MSDOS/Windows, NetWare and VMS - as well as the proprietary Sterling
format that is used in some e-commerce applications. If a FTP server is encountered that
uses some other, unrecognized format, or if a server claims to be of one of the recognized
types, but deviates in its implementation from the expected format, then a user of the
File Transfer control may request "unparsed" data, so that the application may interpret
the listing data itself.
- 7. How does the control report the progress of a transfer?
The OnProgress event reports the name of the file currently being transferred,
and the number of bytes of that file that have been transferred so far. For FTP transfers and
HTTP uploads, file size and percentage completion is also reported. For HTTP downloads, file
size and percentage completion are reported if that information is provided by the web server.
- 8. Does the control work with firewalls?
Some firewalls are implemented with proxy servers that require the specification of an
address, port, and possibly user name and password, in addition to information that
relates to the target FTP or HTTP server. When this is the case, the ProxyType
must also be specified. The technical reference describes the required information in more
detail.
Other types of firewalls don't require this sort of proxy information, but may be
configured to block access to certain sets of IP addresses and/or port numbers. In general,
this is not a problem for HTTP transfers, which typically use standard, well-known ports.
But it can be a problem for FTP servers, which use a separate, dynamically-assigned port
for each file transfer or directory listing. For client-side firewalls, this problem can
usually be overcome by setting the Passive property to True. For server-side
firewalls, keep the Passive property at its default value of False. If there are
firewalls on both the client and server sides of an FTP session, then the administrators
on both sides should be consulted to see if some relaxation of the firewall constraints
is possible. Alternatively, determine whether HTTP can be used to accomplish file
transfers instead.
- 9. Does the control support secure (SSL) connections?
Yes. Set the Secure property to a value of True and secure connections
will be established with the FTP or HTTP server. Note that this requires that the server
support the standard SSL/TLS extensions. Secure FTP servers that have been implemented in
conformance with the draft document "Securing FTP with TLS" require explicit SSL
authorization following connection. For such servers, an additional mask is required in
the dwOptions argument of the Connect method. Please see the
documentation for the Connect method in the technical reference for
details.
- 10. Does the control support SFTP (FTP+SSH) connections?
Yes. Similar to how support for FTPS is enabled, you would set the Secure property
to a value of True to establish a secure connection. If you are connecting on port 22,
the default port number for SSH, then it will automatically connect using the SSH protocol.
If the SSH server is using a non-standard port number, then you can explicitly specify
that SFTP be used by setting the Options property.
- 11. Can the control be used in Visual Basic without a form?
Yes, there are two ways that the control can be used without a form in Visual Basic.
One is to create a reference to the control by selecting
Project | References
from the menu, then clicking on the Browse button and selecting the control's file name.
Then, in the program, an instance of the control can be created using the
Dim
statement as follows:
Dim objFileTransfer As New FileTransferCtl.FileTransfer
The other approach is to use the
CreateObject method:
Dim objFileTransfer As Object
Dim strLicenseKey As String
Set objFileTransfer = CreateObject("SocketTools.FileTransfer.5")
objFileTransfer.Initialize strLicenseKey
Note that the
strLicenseKey value must be obtained from the csftkey5.bas
module that was created in the \Include folder where the product was installed. The
Initialize method must be called explicitly when using the
CreateObject function; otherwise a licensing error will occur when
redistributing the application.
- 12. Can the control be used with Visual C++?
Yes, the control can be used in Visual C++ using one of several methods. The simplest
is to include the control in the project and place it on a dialog, which is similar to
using the control with a Visual Basic form. Other methods include using a CWnd derived
class and creating an instance of the control dynamically or using the
#import
directive to import the the control into the project. The control can also be used as a COM
object and created using the lower level COM API. Refer to the online
Technical Reference
which contains detailed information about using the control with Visual C++.