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 7.2, build 7210.

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 who are currently using version 7.0 or later can download and install the current release at no charge. Customers with a version earlier than 7.0 can purchase an upgrade online.
3. What are the different SocketTools Editions?
The SocketTools .NET Edition includes managed code classes for development using Visual Studio .NET 2003 or later versions. 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 ActiveX Edition, making the transition to the .NET platform as simple as possible.

The ActiveX 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 ActiveX Edition. The primary advantages to the ActiveX Edition is a low learning curve and ease of implementation.

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 connections?
Yes, all three editions of the SocketTools family of products support secure, encrypted connections. The SocketTools .NET Edition consists of managed code components for C# and VB.NET, the SocketTools ActiveX Edition consists of ActiveX components, and the SocketTools Library Edition consists of dynamic link libraries (DLLs). Each edition is capable of establishing secure connections using the SSL and TLS protocols. In addition, SocketTools also support SSH 1.0 and 2.0, which can be used to create secure, interactive terminal sessions, execute commands remotely and perform file transfers using SFTP.
5. What are the minimum system requirements?
SocketTools requires Windows XP 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. 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. The following table lists the minimum operating system versions required:
Operating System Minimum Version
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 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) and developers using Windows 7 should install Service Pack 1 (SP1). 

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 in earlier versions of Windows. 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.
6. Is SocketTools compatible with Windows 7?
All SocketTools 7 Editions are fully supported under Windows 7 and there are no special coding considerations required. Note that 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. Can SocketTools be used with Visual Studio 2010?
Yes. The SocketTools .NET Edition includes managed code classes written specifically for the .NET Framework and can be used with Visual Studio 2010, Visual Studio 2008, Visual Studio 2005 and Visual Studio .NET 2003. The ActiveX controls in the ActiveX 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 using C# or VB.NET upgrade to the SocketTools .NET Edition, which includes assemblies that target the .NET Framework.
8. Can SocketTools be used with Visual Studio 6.0?
Yes, all editions of SocketTools can be used with Visual Studio 6 development tools. It is recommended that you install at least Service Pack 6 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.
9. Can SocketTools be used with Visual Studio Express Editions?
Yes, the SocketTools components and libraries can be used with the free Visual Studio 2010 Express products. If you are using Visual Basic or Visual C# 2010 Express, it is recommended that you download the SocketTools .NET Edition. If you are using Visual C++ Express, it is recommended that you download the SocketTools Library Edition. An academic discount is available for all registered students who wish to purchase a SocketTools license.
10. Can SocketTools be used with Active Server Pages?
Yes, the SocketTools ActiveX Edition components can be used with server-side scripting host environments like ASP and PHP.
11. 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 .NET Edition

1. What is the SocketTools .NET Edition?
The SocketTools .NET Edition is a collection of managed code components designed specifically for Visual Studio .NET 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 web server, 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, SSH and TELNET. In addition to specific protocols, the .NET Edition also includes the SocketWrench .NET class for lower level network access.
2. What version of the .NET Framework is supported?
The minimum version of Visual Studio .NET 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 (version 1.1 with Service Pack 1 installed). The following .NET Frameworks are supported:
Visual Studio Framework Version
Visual Studio .NET 2003 Version 1.1 1.1.4322
Visual Studio 2005 Version 2.0 2.0.50727
Visual Studio 2008 Version 3.5 3.5.21022
Visual Studio 2010 Version 4.0 4.0.30319
The .NET Framework 3.0 includes version 2.0 of the Common Language Runtime (CLR) and is primarily a collection of extension classes that were formally called WinFX. SocketTools includes two sets of the .NET assemblies, one set is compatible with version 1.1 of the framework, and the other set is compatible with version 2.0 and later.
3. What is the difference between the .NET Edition and ActiveX Edition?
Both the .NET Edition and the ActiveX 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 ActiveX 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.
4. 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.
5. 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 e-mail 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.
6. 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.
7. 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).
8. 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 XP or later versions of the Windows operating system. Windows 2000 and earlier versions of Windows 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 and Windows 7 includes both version 1.1 and version 2.0 of the .NET Framework.
9. Should I purchase the .NET Edition if I already use the ActiveX Edition?
If you are currently using the ActiveX 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 7 and later 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 XP 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 7 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 SocketTools 7 backwards compatible with previous versions?
SocketTools 7 has introduced several significant new features, including native 64-bit components and support for IPv6 networks. Updating an application from that used an earlier version of SocketTools 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 updating 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 to remain as consistent as possible, while accomoding new features such as IPv6 support. And lastly, we wanted to enable developers to do more with fewer lines of code.
2. Will new programs written using SocketTools 7 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 7 controls can be deployed along side of older applications written using SocketTools 6.0 or earlier versions without any conflicts.
3. Will you continue to sell SocketTools 6.0?
General sales of previous versions of SocketTools have been discontinued. However, developers will be able to purchase additional licenses for SocketTools 6.0 directly through Catalyst for a limited time. For information about purchasing additional licenses for SocketTools 6.0 or previous versions, please contact the business office.
4. Will you continue to support SocketTools 6.0?
Yes. Technical support for SocketTools 6.0 will continue to be available until it reaches end-of-life on December 31, 2012. The only support options available for earlier versions of SocketTools are self-help through the online technical references, knowledge base articles and support forums.
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. 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 and you will be able to obtain technical support for the previous version until the product reaches its end-of-life. Discounted pricing for developers with multiple licenses may be available to you. For more information, please contact us.