Catalyst File Transfer Control FAQ

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 and FTPS 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 2003 Server 5.20.3790
Windows Vista 6.00.6000
For Windows 2000, it is required that Service Pack 4 (SP4) be installed. For Windows XP, Service Pack 2 (SP2) must be installed.

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.

Catalyst File Transfer .NET

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.

Licensing Questions

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.

Development Questions

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. 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.
11. 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++.

Product FAQs

ActivePatch
Information about ActivePatch, the file patching toolkit.


File Transfer Control
Information about the Catalyst File Transfer control.


Internet Mail Control
Information about the Catalyst Internet Mail control.


SocketTools Editions
Information about the SocketTools suite of products.


SocketTools Subscription
Information about the SocketTools subscription plan.


SocketWrench Editions
Information about the SocketWrench components.


Other FAQs

Product Licensing
Product licensing information for customers and evaluators.


Technical Support
Technical support options and policies for developers.