SocketWrench FAQ

1. What is SocketWrench?
SocketWrench is an ActiveX control, managed .NET class and dynamic link library (DLL) which uses the Windows Sockets API to provide basic TCP/IP networking functionality to your application. Both client and server capability is provided through the component, as well as support for both TCP and UDP protocols. SocketWrench also includes support for standard and secure (SSL) client and server connections. Virtually any type of application which needs to communicate with another, either on a local network intranet or over the Internet, can be written using SocketWrench.
2. What is the current version of SocketWrench?
The current version for all editions of SocketWrench is version 6.0, build 6000.

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 the control and library individually.

Customers with a version earlier than 6.0 can purchase an upgrade online.
3. What are the minimum system requirements?
SocketWrench 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
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.

The SocketWrench 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. What are the key features in SocketWrench?
SocketWrench has been designed to make it easier to develop complex client and server applications, including those which require advanced security features such as data encryption. The component itself is available as both an ActiveX control and a standard Windows dynamic link library (DLL). Some of the key features of SocketWrench are:
  • Support for secure communications in the Secure Edition of the product using standard secure sockets layer (SSL) technology;
  • Improved performance and reliability; this new version has been redesigned so that there is less overhead, reduced memory requirements and higher overall throughput;
  • Improved interface to make development using SocketWrench easier and more straight-forward; fewer lines of code are needed to accomplish the same task;
  • Simplified distribution means that you only need to redistribute the single SocketWrench component; there are no external third-party file dependencies which can complicate installations on target platforms.
In addition to these new features, SocketWrench 6.0 continues to provide the same advantages offered by previous versions. SocketWrench supports the complete Windows Sockets API, and includes both client and server functionality in the same component. Everything you need to develop an Internet or intranet application can be done using SocketWrench.
5. Is SocketWrench 6.0 compatible with previous versions?
SocketWrench 6.0 is source compatible with version 4.0 and version 5.0. Simply remove the reference to the previous version of the control, and add a reference to the current version. For older versions of SocketWrench prior to version 4.0, some coding changes will be required because of differences in the interface. Migration notes and suggestions are included to assist developers in updating their applications.

Note that the new version of SocketWrench can co-exist with previous versions on the same system, and even within the same application. Using the SocketWrench 6.0 control in new applications will not affect programs that were written using older versions of the control.
6. Can SocketWrench be used with Visual Studio 6?
Yes, the ActiveX control and dynamic link library 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 product 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.
7. Can SocketWrench be used with Visual Studio 2008?
Yes. The SocketWrench .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 SocketWrench Standard and Secure Editions 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 SocketWrench .NET Edition, which includes assemblies that target versions 1.1, 2.0 and 3.5 of the .NET Framework.
8. Can SocketWrench be used with Active Server Pages?
Yes, the ActiveX control can be used in Active Server Pages (ASP) by calling the function CreateObject to create an instance of the object. The class name for the object is SocketTools.SocketWrench. 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.
9. Is there a version of SocketWrench for .NET development?
Yes, there is SocketWrench .NET Edition which is designed to be used with Visual Studio 2008, Visual Studio 2005 and Visual Studio .NET 2003. It includes assemblies that can be used to target versions 1.1, 2.0 and 3.5 of the .NET Framework and it is recommended that this edition be used with .NET development projects rather than the ActiveX control in the SocketWrench Standard and Secure Editions.
10. What secure communication protocols are supported?
SocketWrench 6.0 supports 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. Note that in order to access the security features of SocketWrench, a Secure Edition development license is required.
11. Does SocketWrench require any third-party libraries?
No, SocketWrench is completely self-contained with no dependencies on third-party libraries or Microsoft support libraries. The only thing that needs to be redistributed with your application is the SocketWrench control or library itself. If you are using Windows 95 or Windows 98, it may be necessary to update the system with the latest version of Internet Explorer available for that platform and install the current security patches. Note that in order to access the security features of SocketWrench, a Secure Edition development license is required.
12. Does SocketWrench require Internet Explorer?
The SocketWrench control does not use Internet Explorer or WinInet, however it does 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.
13. Does SocketWrench use the Microsoft WinInet library?
No, SocketWrench does not use Microsoft's proprietary WinInet library to establish secure connections. It is not required that you redistribute the WinInet.dll with your software unless you make use of it elsewhere in your application. SocketWrench uses the Windows CryptoAPI and standard Windows Security Support Provider Interface (SSPI), which is modeled after the Generic Security Service (GSS-API) interface outlined in RFC 2078.
14. Are there any third-party patent restrictions?
No. SocketWrench 6.0 uses standard Windows libraries which are included with the operating system and the current version of Internet Explorer. There are no patent restrictions or requirements for you to pay licensing fees to third-parties.
15. Is there an evaluation copy of the product available?
Yes. If you choose to install SocketWrench 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.

SocketWrench .NET Edition

1. What is SocketWrench .NET?
SocketWrench .NET is a managed code component for general purpose network programming and can be used with any Visual Studio .NET programming language. It is designed for the developer who needs to create custom client and server applications, including those which need to support advanced security features such as encryption using the standard SSL/TLS protocols. The SocketWrench class is written in C# and provides an interface that is similar to the interface used by the SocketWrench ActiveX control, making it easier to port applications witch use the ActiveX version to the .NET platform. For professional developers, the SocketWrench .NET Edition provides all of the features, documentation and technical support needed to develop complete Internet applications quickly and easily.
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:
Framework Minimum Version
Version 1.1 1.1.4322
Version 2.0 2.0.50727
Version 3.0 2.0.50727
Version 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. Because the CLR was not changed with this version, the version 2.0 assemblies should be used with version 3.0 of the framework.
3. What are the key features in SocketWrench .NET?
SocketWrench .NET has been designed to make it easier to develop complex client and server applications, including those which require advanced security features such as data encryption. The component itself is a class library written Visual C#.NET. Some of the key features of SocketWrench .NET are:
  • Complete support for the Windows Sockets API, including support for both TCP and UDP as well as raw IP sockets. Advanced features such as detailed function call and data logging simplify debugging and technical support once an application is deployed.
  • Support for secure communications using standard encryption technology. The component supports the Secure Sockets Layer (SSL) versions 2.0 and 3.0, as well as Transport Layer Security (TLS) version 1.0 protocols.
  • High performance and reliability without compromise. SocketWrench is designed to provide increased network throughput without sacrificing features, performance and ease-of-use.
  • Simplified interface to make network development easier and more straight-forward; fewer lines of code are needed to accomplish the same task. The interface is similar to the COM interface, making it easier to migrate existing applications to the .NET platform.
  • There are no third-party file dependencies which can complicate installations or result in legal patent or copyright issues. For example, all security related functions use the standard CryptoAPI that is part of the base operating system; there are no dependencies on third-party encryption or security protocol libraries.
In addition to these features, SocketWrench .NET continues to provide the same advantages offered by previous versions and includes both client and server functionality in the same component. Everything you need to develop an Internet or intranet application can be done using SocketWrench.
4. Is SocketWrench .NET compatible with the ActiveX version?
The interface for the SocketWrench .NET component is different from the COM interface in the ActiveX control. An existing .NET application that wraps the ActiveX control will require minor modifications when converting the program to use the SocketWrench .NET managed class library.
5. Can SocketWrench .NET be used with Visual Basic 6.0?
Yes, it is possible to use a managed .NET component from within Visual Basic 6.0, however you have to create a class which exposes an interface to a COM client (which is your VB6 application). The Microsoft Developer's Network documentation has a section on interoperating with unmanaged code that provides information on how to do this. If you're using Visual Basic 6.0, we recommend that you consider using the SocketWrench ActiveX control instead.
6. Can SocketWrench .NET be used with Visual Studio 2008?
Yes. SocketWrench .NET is fully supported in Visual Studio 2008, as well as Visual Studio 2005 and Visual Studio .NET 2003. It can be used with any Visual Studio programming language, and example programs are provided for all supported versions of Visual Studio.
7. What language was the SocketWrench .NET class written in?
The SocketWrench .NET component is a managed code class library written in Visual C#. It is important to note that the component is not simply a COM Interop class wrapper around the SocketWrench ActiveX control; there are no external dependencies on the ActiveX control or any other COM object.
8. Will you continue to support the SocketWrench ActiveX control?
Yes. The SocketWrench .NET Edition is simply another edition of the product and there are no plans to phase out development of our COM components and dynamic link libraries (DLLs). We are committed to developing new features and providing support for all current versions of our products.
9. What secure communication protocols are supported?
SocketWrench 6.0 supports 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.
10. Does SocketWrench .NET require any third-party libraries?
SocketWrench .NET has no dependencies on third-party libraries. It is always recommended that the system have the latest security updates and service packs for the .NET Framework installed.
11. Can I evaluate SocketWrench .NET if I have SocketTools installed?
Yes, you can install an evaluation version of SocketWrench .NET on a system that already has an evaluation or licensed copy of SocketTools or SocketWrench installed. They are completely separate products and the evaluation license will not interfere with your ability to compile and redistribute applications developed using other editions of SocketTools or SocketWrench.
12. Is there a separate SocketWrench .NET Secure Edition?
The SocketWrench .NET component supports both standard and secure (SSL/TLS) connections and it does not require that you purchase a different edition to enable the security features.

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?
SocketWrench 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 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 SocketWrench. 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, SocketWrench 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 SocketWrench 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 SocketWrench 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. What is the best way to get started using SocketWrench?
Included with SocketWrench is a User's Guide and Technical Reference. This covers the basics of TCP/IP programming with SocketWrench and gets you started with your first project. There are also a number of samples included with the package which demonstrate how to use the control with a variety of application protocols. If you are already familiar with network programming under Windows or UNIX, then you should find SocketWrench to be very easy to use.
2. Can SocketWrench be used to transfer files?
Yes, and there are example programs included with the package which demonstrate how SocketWrench can be used to transfer files. The standard protocol for uploading and downloading files over the Internet is the File Transfer Protocol (FTP), which is defined in RFC 959.

If file transfers are an important part of your application, Catalyst also offers a File Transfer control as a separate product which can greatly simplify the process of uploading and/or downloading files using either the FTP or HTTP protocols.
3. Can SocketWrench be used to send e-mail messages?
Yes, however your application is responsible for composing a message which conforms to the Internet e-mail standards outlined in RFC 822 and RFC 2045. To send a message, the Simple Mail Transfer Protocol (SMTP) should be implemented as defined in RFC 821. To download messages from a mail server, the Post Office Protocol (POP3) should be used as defined in RFC 1939.

If sending e-mail messages and/or managing messages on a mail server are an important part of your application, Catalyst also offers an Internet Mail control as a separate product which can greatly simplify the process of composing, sending and retrieving e-mail messages.
4. Can I monitor Ethernet traffic using SocketWrench?
The SocketWrench package does not include a control or library that can help you monitor low-level Ethernet traffic on your local network (commonly called a network monitor or sniffer). If you wish to develop this type of application, one company that you can contact is PCAUSA. They provide a Win32 NDIS development framework that can be used to directly access MAC drivers under Windows 98 and Windows NT.
5. Do I have to be connected to the Internet during development?
SocketWrench will dynamically load the Windows Sockets library only when it determines that it actually needs a network connection. This means that it is safe to use the control or library in a project, and as long as it is not accessed, it will not require a network connection.

When you come to the point in your development where you want to work with the control or library, but you don't want to dial out to a service provider, you can use what is called the loopback interface. This is a special IP address, 127.0.0.1, which always refers to your own local system. Just like a loopback connector on a serial port, when you use this address, anything that is written on the socket is immediately sent back as data to be read.
6. How do I connect to an Internet service provider?
Dial-up networking is part of the Remote Access Services (RAS) subsystem which can be used by applications to establish a connection with an Internet Service Provider (ISP). This interface is available on all Windows platforms, with documentation for the API available at the Microsoft Developers Network site. SocketWrench includes a RAS dialer ActiveX control which you can use to easily create and manage dial-up networking connections.
7. How do I establish a secure connection with SocketWrench?
The ActiveX control has a property named Secure which is used to specify if a secure connection is to be established. To establish a secure client connection, set the property to a value of True before connecting to the server:
SocketWrench1.Secure = True
nError = SocketWrench1.Connect(strRemoteHost, nRemotePort)
If nError Then
    MsgBox "Unable to establish a secure connection"
EndIf
With the library, your application will need to specify an option that requests that a secure connection be established with the server. For example:
SOCKET sockClient;
LPCTSTR pszRemoteHost = _T("www.catalyst.com");
UINT nRemotePort = 443;
UINT nTimeout = 120;

if (InetInitialize(CSWSOCK4_LICENSE_KEY, 0L) == 0)
{
   // Unable to initialize SocketWrench library
   return;
}

    sockClient = InetConnectEx(pszRemoteHost,
                               nRemotePort,
                               INET_PROTOCOL_TCP,
                               nTimeout,
                               INET_OPTION_SECURE,
                               0, 0, NULL);

if (sockClient == INVALID_SOCKET)
{
    int nError = InetGetLastError();
    if (nError == ST_ERROR_SECURITY_NOT_INITIALIZED)
    {
        // Unable to initialize security interface
        return;
    }
    else
    {
        // Unable to establish a connection
        return;
    }
}
If the library is not initialized with a 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.

Note that a SocketWrench Secure Edition development license is required in order to establish a secure connection.
8. Can the ActiveX 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 objSocket As New SocketWrench
The other approach is to use the CreateObject method:
Dim objSocket As Object
Dim strLicenseKey As String
Set objSocket = CreateObject("SocketTools.SocketWrench.5")
objSocket.Initialize strLicenseKey
Note that the strLicenseKey value must be obtained from the cswskey5.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.
9. Can the ActiveX 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.