SocketTools FAQ

1. What is SocketTools?
SocketTools is a comprehensive toolkit for Internet and intranet software development that consists of managed code components for the .NET Framework, ActiveX controls, COM-based scripting components and/or dynamic link libraries (DLLs). Using SocketTools, a developer can easily incorporate Internet functionality into their application without requiring that they learn general Windows Sockets programming or the technical specifications of a particular application protocol. Additional information about the product can be found in the SocketTools Overview.
2. What is the current version of SocketTools?
The current version for SocketTools is version 5.0, build 5035.

To determine the version of the controls and/or libraries that you have installed, run the License Manager utility that is included in the program folder created during installation. Using this utility, you can display the version and build number for the product, as well as for each control individually.

Customers with a version earlier than 5.0 can purchase an upgrade online.
3. What are the different SocketTools Editions?
The SocketTools .NET Edition includes managed code classes for development using either Visual Studio 2008, Visual Studio 2005 or Visual Studio .NET 2003. The SocketTools .NET classes can be used in both Visual Basic and C# and provide an interface that is similar to the ActiveX controls in the Visual Edition, making the transition to the .NET platform as simple as possible.

The Visual Edition is ideal for developers who are using development tools like Visual Basic. Any language that supports the Component Object Model (COM) and ActiveX control specification can use the controls in the Visual Edition. The primary advantages to the Visual Edition is a low learning curve and ease of implementation.

The Scripting Edition is a collection of components which are designed to be used as objects in a scripting language such as VBScript and JScript. The scripting components are similar to the controls in the Visual Edition, but do not have the inherent overhead of full ActiveX controls and use a threading model that makes them more efficient for server-side scripting in host environments like ASP and PHP.

The Library Edition is ideal for developers who need the flexibility and low overhead of standard Windows dynamic link libraries (DLLs). More than just for C/C++ programmers, most Windows programming languages can make use of the Library Edition. The primary advantage to the Library Edition is improved performance and minimal system resource requirements.
4. Can SocketTools be used to establish secure (SSL/TLS) connections?
Yes. There are four editions of the SocketTools family of products which support secure, encrypted connections. The Secure .NET Edition consists of managed code components, the Secure Visual Edition consists of ActiveX components, the Secure Library Edition consists of dynamic link libraries (DLLs) and the Secure Scripting Edition consists of COM-based scripting objects. Each Secure Edition is capable of establishing secure connections using the SSL 2.0, SSL 3.0, TLS 1.0 and PCT 1.0 protocols.
5. What platforms can SocketTools be used on?
SocketTools is supported on Windows Vista, Windows Server 2003, Windows XP and Windows 2000. Any functional differences between the platforms are handled internally by the components and/or libraries without requiring additional coding on the part of the developer.

If you are using Windows 2000, it is required that you have Service Pack 4 (SP4) installed. If you are using Windows XP, it is required that you have Service Pack 2 (SP2) installed.
6. Is SocketTools compatible with Windows Vista?
Windows Vista has introduced a number of security related features, including User Account Control (UAC) and a software-based firewall that can be used to monitor and restrict Internet access. All editions of SocketTools 5.0 are fully supported under Windows Vista and there are no special coding considerations required. It may be necessary to configure the Windows firewall so that your applications are permitted to establish connections and/or accept inbound connections on specific ports. Refer to the operating system documentation for more information on how to configure the firewall.
7. Does SocketTools work with Visual Studio 6.0?
Yes, all editions of SocketTools can be used with the current version of Microsoft's Visual Studio 6 development tools. It is recommended that you install at least Service Pack 5 for Visual Studio 6. The current service pack for Visual Studio 6 can be downloaded from Microsoft's Visual Studio Developer Center. Note that the SocketTools .NET Edition components are managed code classes and require the .NET Framework and Common Language Runtime, and as such are not supported in Visual Studio 6.0.
8. Does SocketTools work with Visual Studio 2008?
Yes. The SocketTools .NET Edition includes managed code classes written specifically for the .NET Framework and can be used with Visual Studio 2008, Visual Studio 2005 and Visual Studio .NET 2003. The ActiveX controls in the Visual Edition can also be used with the .NET Framework 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 2008 upgrade to the SocketTools .NET Edition, which includes assemblies that target versions 1.1, 2.0 and 3.5 of the .NET Framework.
9. Can SocketTools be used with Active Server Pages?
Yes, the SocketTools Scripting Edition is designed for server-side scripting host environments like ASP and PHP. The Visual Edition also has support for scripting languages, however there are some limitations in terms of functionality and performance.
10. Can I download an evaluation copy of SocketTools?
Yes, evaluation copies for all SocketTools Editions are available for download. The evaluation package is fully functional and can be used for a period of thirty (30) days from the date of installation. Please note that during the evaluation period, the libraries and/or components are licensed for use only on the development system and may not be redistributed until a license is purchased.

SocketTools Secure Editions

1. What are the SocketTools Secure Editions?
The SocketTools Secure Editions are a collection of .NET managed code components, ActiveX controls, COM scripting objects and libraries which support secure, encrypted data connections over the Internet or a local network. There is a Secure Edition for each corresponding standard edition in the SocketTools family of products. The Secure .NET Edition consists of managed code components. The Secure Visual Edition consists of ActiveX controls, the Secure Scripting Edition consists of COM scripting components and the Secure Library Edition consists of dynamic link libraries (DLLs).
2. What secure communications protocols are supported?
Currently, the SocketTools Secure Editions support 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.
3. What are the minimum system requirements for the Secure Editions?
The SocketTools Secure Editions include 32-bit components and libraries which require 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
It is required that Windows 2000 have Service Pack 4 (SP4) installed on the system for both developers and end-users. For Windows XP, Service Pack 2 (SP2) must be installed.

SocketTools does not directly use Internet Explorer or the WinInet library, however it does depend on several core operating system libraries that are shared with Internet Explorer. It is recommended that you upgrade to the latest version of Internet Explorer available for your platform, and make sure that all service packs and security updates have been installed.
4. Is SocketTools compatible with Windows 95/98?
SocketTools 5.0 is not compatible with Windows 95, Windows 98 or Windows Me. The minimum operating system required is Windows 2000 with Service Pack 4 (SP4) installed. Support for Windows 98 and Windows Me was discontinued in July, 2006 and the operating system no longer receives security updates or technical support from Microsoft.
5. Do the Secure Edition components require Internet Explorer?
The SocketTools components do not use Internet Explorer or WinInet, however they do depend on base system libraries such as the CryptoAPI. Because Internet Explorer is considered to be a core system component, it is recommended that you always update your system with the latest version, service pack and hotfixes.
6. Do the Secure Edition components require the Microsoft WinInet library?
No, the Secure Edition components do 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 Secure Editions use the standard Windows CryptoAPI and Security Support Provider Interface (SSPI), which is modeled after the Generic Security Service (GSS-API) interface outlined in RFC 2078.
7. Can the Secure Edition components be used to establish standard connections?
Yes. In addition to establishing secure connections, the Secure Edition controls and libraries can be used in exactly the same way as the Standard Edition components. Secure connections are established only when the application explicitly requests them by setting a property or specifying an option to a function call.
8. Will existing applications have to be modified after upgrading to the Secure Edition?
All of your existing code will continue to function as it did with the Standard Edition of the product. The security implementation is layered over the standard interface and is generally transparent to the calling application. By default, the controls and libraries will continue to work as they did in the Standard Edition. Your application must set specific properties, or specify specific options, which indicates that you want to establish a secure connection to the server.
9. What code changes are required to support secure connections?
The changes required to establish a secure connection are minimal. In most cases for the .NET components, ActiveX controls and scripting components, it is only required that you set the Secure property to a value of True. If the component is unable to initialize the security interface, either because a Standard Edition license is installed or because the required system libraries cannot be loaded, an error will be generated indicating that the property could not be changed. For example, if you are using either the Secure Visual Edition or Secure Scripting Edition, you could use the following code:
On Error Resume Next: Err.Clear
httpClient.Secure = True
If Err.Number Then
    MsgBox "Unable to establish a secure connection"
    Exit Sub
EndIf
On Error GoTo 0
With the Library Edition, your application will need to specify an option that requests that a secure connection be established with the server. For example, when using the HTTP library, you would need to specify the bitflag HTTP_OPTION_SECURE when calling one of the connection functions such as HttpConnect. The code to do this would look like this:
HCLIENT hClient;
LPCTSTR pszHostName = _T("www.catalyst.com");

if (HttpInitialize(CSTOOLS5_LICENSE_KEY, 0L) == 0)
{
    // Unable to initialize HTTP library
    return;
}

hClient = HttpConnect(pszHostName,
                      HTTP_PORT_SECURE,
                      HTTP_TIMEOUT,
                      HTTP_OPTION_SECURE,
                      HTTPVERSION(1, 0),
                      NULL);

if (hClient == INVALID_CLIENT)
{
    DWORD dwError = HttpGetLastError();
    if (dwError == ST_ERROR_SECURITY_NOT_INITIALIZED)
    {
        // Unable to initialize security interface
        return;
    }
    else
    {
        // Unable to establish a connection
        return;
    }
}
As with the Visual and Scripting Editions, if the library is not initialized with a Secure Edition runtime license key, or the security libraries could not be loaded, the connection attempt will fail with an error. At this point, your application could either display a warning to the user or optionally establish a standard, non-secure connection to the server.
10. Can I upgrade from the Standard Edition to the Secure Edition?
Yes, you can upgrade your Standard .NET, Visual, Scripting or Library Edition to the corresponding Secure Edition of that product. When you purchase the upgrade, a new serial number will be issued to you which enables the security features. If you are currently using a version of SocketTools prior to version 4.0, you will have to upgrade to the current version. The upgrade cost is the difference in price between the Standard and Secure Editions of the product being upgraded.
11. Are there any licensing restrictions for the Secure Editions?
The Secure Visual, Scripting and Library Editions carry the same license agreement as the Standard Editions of the product. You are permitted 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 Secure Editions.
12. Are there any third-party patent issues or licensing requirements?
No. The Secure Editions use standard Windows libraries which are included with the operating system and the current version of Internet Explorer. There are no requirements for you to pay licensing fees to third-parties.

SocketTools .NET Edition

1. What is the SocketTools .NET Edition?
The SocketTools .NET Edition is a collection of managed code components designed specifically for the Visual Studio 2008, Visual Studio 2005 and Visual Studio .NET 2003 development tools. The .NET Edition is ideal for the developer who is programming in Visual Basic .NET or C# on the Windows platform. It includes components for uploading and downloading files, sending and retrieving e-mail messages, posting form data to a webserver, remote command execution, retrieving and posting news articles and much more. Supported standards and protocols include FTP, HTTP, ICMP, IMAP4, MIME, POP3, NNTP, POP3, RAS, RSH, SMTP and TELNET. In addition to specific protocols, the .NET Edition also includes the SocketWrench .NET class for lower level network access. The .NET Edition is also available in a Secure Edition which supports secure, encrypted connections using the industry standard SSL and TLS protocols.
2. What is the difference between the .NET Edition and Visual Edition?
Both the .NET Edition and the Visual Edition include the same collection of components and have similar interfaces, however the .NET Edition components are .NET managed code components which use the Common Language Runtime (CLR) and require that the user have the .NET Framework installed on their system. The Visual Edition components are ActiveX controls, which are primarily designed for older development tools such as Visual Basic 6.0. While the ActiveX controls can be used with .NET languages, they can incur a significant performance penalty. The .NET components in the SocketTools .NET Edition do not use COM interop and don't have the inherent performance issues that ActiveX controls do. They also generally simplify redistribution and provide a native interface that is easier to work with.
3. What language were the SocketTools .NET Edition components written in?
The SocketTools .NET components were written in Visual C#. It is important to note that they can be used in Visual Basic .NET without any limitations. Because they are managed code components that use the Common Language Runtime (CLR), SocketTools .NET 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. Do the SocketTools .NET Edition components support multi-threading?
Yes, the SocketTools .NET components are 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 activities such as downloading or uploading files, processing email messages and so on. This allows the main UI thread to remain responsive to the user while the SocketTools components perform their work in the background.
5. Do the SocketTools .NET Edition components support events?
Yes, the SocketTools .NET components support events to notify the application when certain actions are taken or a network event occurs. There are two general types of events that are supported by SocketTools .NET. The first are network events that occur when an asynchronous connection is established with the remote host. Examples of these types of events are OnConnect, OnRead and OnDisconnect. The second type of events that occur are those which are generated when an action is in progress or completes. Examples of these types of events are OnProgress, OnCancel and OnTimeout.
6. Can the SocketTools .NET components be used with Visual Basic 6.0?
The SocketTools .NET components are managed code classes which require the .NET Framework and a programming language which can generate Common Intermediate Language (CIL) bytecode. They do not expose COM interfaces 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 SocketTools .NET?
The SocketTools .NET Edition components are designed to work with Visual Studio 2008, Visual Studio 2005 or Visual Studio .NET 2003 and require 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 the .NET Framework 1.1 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 Edition if I already use the Visual Edition?
If you are currently using the Visual Edition with Visual Basic .NET or Visual C#.NET then we strongly recommend that you move to the SocketTools .NET Edition. You'll see improved performance and a more natural interface that makes the components 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 editions include the same basic collection of components and support the same Internet application protocols.

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 controls or libraries 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?
SocketTools components and libraries are 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 components and/or libraries will cease to function after the evaluation period has expired. This means that you will not be able to load them into your development environment, and any application that uses them will no longer function. Second, you cannot redistribute any application that uses SocketTools 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 product?
Yes, a license is required for each developer who is using SocketTools. 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 product 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, SocketTools 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 same as the license key.
6. 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 product was installed with an evaluation license, then it 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 an ActiveX 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. For more information, refer to the online help for the product.
7. Are there any royalties or runtime licensing fees?
No, absolutely not. The development license allows you to make any number of products with the SocketTools components, and redistribute those components along with your application to any number of end-users. For more information about how our products are licensed, please refer to our Product Licensing FAQ.

Development Questions

1. Does SocketTools require Internet Explorer or the WinInet library?
The SocketTools controls and libraries require only that the networking subsystem be installed and configured on the computer system; this includes the standard Windows Sockets library. All of the supported Windows platforms include the Windows Sockets library as part of the base operating system.
2. What version of the Windows Sockets API is used?
SocketTools 5.0 requires version 2.2 of the Windows Sockets API and loads WS2_32.DLL. This is the current version of the API, and is supported on Windows 2000 and later platforms. If that version of the Windows Sockets library cannot be loaded and initialized, an error will be returned to the application indicating the failure.
3. Do I have to be connected to the Internet when I develop my application?
You can develop your application on a system that does not have an active connection to the Internet or any local network. The SocketTools components will automatically load the appropriate networking libraries whenever a property is set or a method is invoked which requires access to the network. If you are using the Library Edition, the networking libraries are loaded whenever the initialization function is called by your application.
4. Should I redistribute the Windows Sockets DLL with my software?
No, you should never redistribute the Windows Sockets libraries with your application. These libraries are specific to the TCP/IP stack and operating system, and can cause serious problems if installed on another platform. Note that your setup software may include one of these libraries in your setup project as a file dependency. If this is the case, you must take steps to remove it and insure that it is not included in your installation package.
5. Does the Library Edition use standard DLLs or ActiveX DLLs?
The Library Edition uses standard Windows DLLs which can be used by virtually any Windows programming language or scripting tool. This ensures that you can use SocketTools in the widest range of development projects with minimal overhead and without concern about compatibility with a specific language or platform. A general rule of thumb is that if your language of choice is capable of calling native Windows API functions, it can use the SocketTools libraries.
6. Is it necessary to make specific code changes for Windows Vista?
There are no specific code changes that are required to use SocketTools 5.0 under Windows Vista. Any changes in platform-specific functionality are handled transparently by the controls or libraries. From an application development perspective, you will not have to make any changes to your program unless you want to take advantage of features specific to the Vista operating system.
7. Can I use SocketTools in a multithreaded application?
Yes, the SocketTools components and libraries can be safely used in multithreaded applications. When a client session is created, it is associated with the thread that created it until the thread is destroyed. One important consideration is that by default the client session can only be referenced by the thread that created it. If you wish to create worker threads, then it is recommended that same thread be used to manage the session from the point where the connection is established with the server. An alternative would be to use the free-threading option when establishing the connection. Refer to the technical reference documentation for more information about how to enable free-threading in the .NET classes and standard libraries.
8. Are any third-party libraries required when redistributing my application?
No. The SocketTools components and libraries are completely self-contained and do not require the installation of any third-party libraries. If you are using the ActiveX components, all that is required is that your application register the components. This is typically done by the installer, but can also be performed from the command line using the RegSvr32.exe utility. It is recommended that the components be installed in the System32 folder.

Note that the libraries in the Library Edition are not COM objects and there is no need to register them. You may simply install them in the same directory as your application.

Upgrade Questions

1. Is version 5.0 backwards compatible with previous versions?
SocketTools 5.0 is source compatible with version 4.0 and 4.5. In most cases, the only requirement will be referencing the new library or component, updating your runtime license key and recompiling the application. However, it is important to note that the version 5.0 components are not binary compatible. In other words, they are not drop-in replacements for previous versions. You must recompile the application and distribute the new version of the controls along with your software.

Upgrading an application from version 3.6 or earlier may require some source changes; however, those changes will typically be minimal and the majority of them will be to take advantage of the new features in the control or library. We have included information about upgrading your projects in the online help. The changes that were made to the interfaces were based on three key design goals. First, we wanted to make SocketTools even easier to use, particularly for newer developers. We also wanted to make the programming interfaces for the various controls and libraries more consistent. And lastly, we wanted to enable developers to do more with fewer lines of code.
2. Will new programs written using SocketTools 5.0 co-exist with older programs?
The new libraries and controls have different module names and GUIDs, which will allow them to co-exist with the libraries and controls included with previous versions of SocketTools. New applications written using the SocketTools 5.0 controls can be deployed along side of older applications written using SocketTools 4.5 or earlier versions without any conflicts.
3. Will you continue to sell SocketTools 4.5?
Sales of previous versions of SocketTools have been discontinued. However, developers with will be able to purchase additional licenses for SocketTools 4.5 directly through Catalyst for a limited time. For information about purchasing additional licenses for SocketTools 4.5, please contact the business office.
4. Will you continue to support SocketTools 4.5?
Technical support for SocketTools 4.5 was discontinued on December 31, 2007. The only support options available for earlier versions of SocketTools are self-help through the online technical references, knowledge base articles and support forums. Technical support for SocketTools 3.6 and previous versions was discontinued on December 31, 2004.
5. What happens with my technical support contract when I upgrade?
If you currently have an active technical support contract when you upgrade, your new SocketTools license will be transferred to that contract for the remainder of the contract period. Technical support for the previous version of SocketTools will also remain available for the remainder of the contract; however, you will not be able to renew a support contract for the previous version. Renewed contracts are only available for the current version of the product.
6. Can I continue to maintain existing applications after I upgrade?
The upgrade exchanges your license with a new license for the current version of SocketTools. You will be able to still modify, compile and redistribute your existing applications using the previous version of SocketTools; however, you will not be able to obtain technical support for the previous version. Discounted pricing for developers with multiple licenses may be available to you. For more information, please contact us.

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.