November 19th, 2011· Changed C++ classes to support methods that reference CString (CStringT) types if ATL is being used. Note that when using ATL, there are several macros which can affect how the CString class is defined and it depends on whether MFC is also being used. For more information, refer to the CStringT class documentation in the MSDN Library.
· Updated several C++ class methods to use more appropriate default values for optional parameters. There were also a number of macros that were defined and used by the SocketTools class wrappers which have been renamed to avoid potential conflicts.
· Corrected a problem where a component may return a "network not initialized" error when the real problem was an invalid runtime license key.
· Corrected a problem where an ActiveX control would not initialize correctly if the Initialize method was called after another method, rather than being the first method called.
· Corrected a problem in .NET components where errorInvalidHandle could be thrown rather than errorOperationNotSupported.
· Changed the Initialize method to throw System.ObjectDisposedException if it is called after the the Dispose method, rather than simply failing silently.
· Corrected a problem in the Dialer ActiveX control where setting the ThrowError property could throw an "invalid property value" exception.
· Corrected a problem where the Initialize method would not actually validate a runtime license key if it previously validated a development license on the current system. This would prevent developers from detecting a problem with the license key until they deployed the application to another system.
· Updated .NET components to throw System.IndexOutOfRangeException and System.ArgumentNullException rather than errorInvalidParameter where appropriate for various properties and methods.
· Updated .NET components to handle errors more consistently across all components. Invalid property values should always throw an exception and never fire the OnError event. Methods should only throw exceptions if the ThrowError property is true.
· The HostAddress property in the ActiveX controls and .NET components should always attempt to return the IP address associated with the HostName property if a connection has been established. This is independent of the value of the AutoResolve property.
· The undocumented cData member of the SECURITYCREDENTIALS structure has been removed. This should have no impact on existing applications because this structure member should never have been referenced. The functions that use this structure only check for a minimum structure size, and will not return an error if actual structure size is larger. This ensures backwards compatibility with previous versions of the library.
· Support for The PCT security protocol has been removed from all components. This security protocol has not been widely used, contains several known security vulnerabilities and is not being actively developed by Microsoft.
· Support for TLS 1.1 and TLS 1.2 has been added, this requires Windows 7 or later versions. Clients will automatically negotiate for the highest version of TLS supported by the server. Windows XP and Windows Server 2003 will only support TLS 1.0.
· Added the InetIsProtocolAvailable function that can be used to determine if a specific address family and socket type can be created.
· Changed the InternetServer ClientHandle property array to accept a client name as well as a numeric index value.
· Changed the InetRead, InetReadEx, InetWrite and InetWriteEx functions to support data buffers larger than 16K for secure connections.
· Updated the documentation to be more consistent across the different editions of SocketTools and corrected many errors and omissions.
July 7th, 2011· There have been general improvements to network performance and IPv6 compatibility, and several issues have been resolved that were specific to IPv6 support on Windows XP, Windows Server 2003 and Windows Vista.
· Internal changes to the Internet Server component and library have improved overall data transfer rates when large amounts of data are being exchanged with a client over a high-speed network.
· Corrected a problem with the InternetDialer class that could cause a 32-bit application to throw an unhandled exception when the class was initialized on a 64-bit Windows system running under WoW64.
· Corrected a problem that could cause an error message to be displayed when Data Execution Prevention (DEP) was enabled on the platform and an instance of an ActiveX control was created using CreateObject in VBScript or another scripting language.
· Updated the PowerBasic examples and include files to support version 10 of the Windows compiler and version 6 of the console compiler. Note that these new function declarations include both ANSI and Unicode versions, and therefore are not backwards compatible with previous versions of PowerBasic. Developers using an earlier version of the language can request function declarations for older versions.
· There have been general improvements and corrections to the documentation, and corrections to several internal help links that referenced invalid sections of the technical reference.
· The installer will now include a separate copy of redistributable files, and this will include both 32-bit and 64-bit components, even if the installation is being performed on a 32-bit Windows system. 32-bit components are found in the x86 folder, and 64-bit components are found in the x64 folder.
· The Windows 2000 platform is no longer considered a supported platform for SocketTools and all related products. While an application may continue to work under Windows 2000, we can no longer provide technical support for this version of Windows. The minimum supported platform for SocketTools is Windows XP with Service Pack 3 (SP3) installed. Note that Microsoft discontinued support for Windows 2000 and Windows XP SP2 in July, 2010 and those platforms are no longer receiving updates.
March 11th, 2011New components that implement the SSH protocol:
· The SocketTools 7.0 Secure Editions introduce new components that implement the Secure Shell (SSH) protocol, which can be used to establish a secure, encrypted connection with a server. With an interface that is similar to our Telnet components, you can implement an interactive terminal session, or you can specify that you want a command executed remotely and the output returned to your application. SSH does not require complicated certificate management and is widely supported on most servers today. Of course, the SocketTools Secure Editions continue to also support the SSL and TLS security protocols, providing the widest range of options to developers who require security features for their applications.
Integrated support for file transfers using SFTP:
· The SocketTools Secure Editions support file transfers using the Secure Shell (SSH) protocol, as well as the SSL and TLS protocols. Also commonly referred to as FTP+SSH, the SocketTools file transfer components can be used to connect to an SSH server and upload or download files, obtain directory listings and perform common file management functions. Because support for SFTP is integrated into the existing FTP components, in most cases all you need to do is specify the SSH port number without making any other changes to your code. The same interface is provided for FTP, FTP+SSL and FTP+SSH, making it easy to offer the widest range of options to your users.
Build custom server applications effortlessly:
· One of the most complex tasks in Internet software development is creating a custom server application that can reliably handle a large number of client connections. SocketTools 7.0 introduces a new Internet Server component to simplify the development of custom servers, providing an easy-to-use framework where the only code you need to write is in response to events that are sent to your application. With a single function call, you can create a scalable, multi-threaded, event-driven server that can be used to accept connections from clients anywhere in the world, or just on your local intranet. All of the networking, thread management, synchronization and messaging are handled internally by the framework, allowing you to focus on writing your own code without worrying about the complex details of the server implementation.
Manage stored mail messages on the local system:
· Developers who need to create an e-mail application that download and store messages on the local system, the Mail Message (MIME) components and library have been expanded to provide a new storage interface that simplifies the storage, retrieval and management of message. Simply create a new storage file, and begin adding messages to it. When you need to access a stored message, you can reference it by an index number, or you can use functions to search for a particular message that contains a specific header value. For example, you can search the message store for all messages that have been sent by someone with a particular e-mail address. There's even a compatibility mode where you can import message stores from UNIX mail systems, if needed.
· Support for file verification and automatic file type detection:The File Transfer Protocol components can automatically verify that the file on the local system is identical to the file on the server using an MD5 hash or CRC-32 checksum, and will automatically set the correct file transfer mode based on the type of file being uploaded or downloaded. Developers can also explicitly verify the contents of a file, and register their own custom file types.
Fully compatible with Windows 7, Windows Vista and Windows Server 2008:
· Is designed to take advantage of new features introduced in Microsoft's latest operating system. Our developers use Windows 7 and Visual Studio 2008 as their primary development platform, so we work with the operating system every day and understand how it impacts application development. Of course, SocketTools is also fully supported under Windows Vista, Windows XP SP3 and SP2, Windows Server 2003 and Windows 2000. If your users are upgrading to Windows 7 or Windows Server 2008 R2, then we recommend that you to upgrade to SocketTools 7.0 to ensure compatibility.
Improved performance and reliability:
· A new internal memory management system improves how large blocks of memory are allocated and managed, both overall and on a per-client basis. In particular, complex multithreaded applications which create multiple client sessions can see increased performance and use fewer resources over the lifetime of the application. The POP3 and IMAP4 components have also been improved so that they are significantly more efficient when used to manage very large mailboxes.
Enhanced security features:
· Advanced Encryption Standard (AES) is a new encryption standard that is being widely adopted by the United States government and organizations around the world. SocketTools 7.0 supports AES on the Windows Vista and Windows Server 2008 platforms, enabling your application to take advantage of the latest security features without requiring any changes to your applications.
Improved support for firewalls and proxy servers:
· New options for the File Transfer Protocol allows you to specify alternate port ranges for active mode transfers, making it simpler to integrate with software and hardware firewalls which limits access to certain ports. The Hypertext Transfer Protocol components have improved proxy support and automatic proxy detection which makes it easier to integrate your applications on a customer's network. Support has also been added for virtual hosting, where an FTP server is configured to support multiple domains using a single external IP address.
Improved support for non-standard e-mail messages:
· The Mail Message components have been updated so that it will automatically attempt to correct problems with malformed messages, or messages which do not strictly conform the standard message formats as outlined in RFC 822 and RFC 2045. This allows applications to process messages that might otherwise be rejected because the sender's mail client did not format the message correctly.
Target multiple frameworks with the SocketTools .NET Edition:
· Assemblies for the 1.1, 2.0, 3.5 and 4.0 .NET Frameworks are included in the same product, enabling developers to specifically target which framework they are using to deploy their application. Although most new development today is using Visual Studio 2008 and moving to Visual Studio 2010, we realize there are still a large number of developers who are creating applications using Visual Studio .NET 2003 and Visual Studio 2005, and we will continue to provide support for these older versions of Visual Studio. Regardless of which version of .NET you're using, the SocketTools classes have identical interfaces and are completely source-compatible with one another.
Better control over resource utilization:
· The SocketTools File Transfer and Hypertext Transfer components support session priority, improving performance and giving your application finer control over the resources allocated for data transfers. Each client session can have its own priority, which ranges from very low resource utilization for background operations that have minimal impact on the system, to critical transfers which allocate more memory, processor time and network bandwidth to the client session.
Backwards compatibility with previous versions of SocketTools:
· If you are currently using version 6.0 or earlier, the components in version 7.0 have a compatible interface and will require few, if any changes to your existing code. While new features have been added, the existing class interfaces and APIs remain substantially the same. In most cases, all you will need to do is remove the old version of the control, class or library, replace it with the new version and recompile your application. Because the 7.0 components are designed to work side-by-side with previous versions, it also means that you can deploy new versions of your software without worrying about DLL conflicts or other version incompatibilities.
Expanded technical reference documentation:
· The reference material for SocketTools is extensive, and in version 7.0 we've worked to make it both easy to understand and comprehensive. Available in HTML Help format, the SocketTools documentation includes a Developer's Guide to get you up and running quickly, and a Technical Reference that provides extensive documentation for every API function, class method, property and event. As an example, the documentation for the SocketTools .NET classes is over 3,200 pages and the SocketTools API is over 2,000 pages.
Expanded and updated example code:
· Included examples for Visual Studio 2010, Visual Studio 2008, Visual Studio 2005 and Visual Studio .NET 2003. We've reorganized many of the examples included with SocketTools to make them easier to find, easier to understand and extend for your own use. In addition to new examples for the current version of Visual Studio, we've also retained and updated the examples for Visual Basic 6.0 and Visual C++ 6.0 because we realize that some developers continue to use the older development tools. Additional examples for third-party languages like PowerBASIC and RealBasic have also been included based on customer feedback.
September 5th, 2008· New Internet Server ActiveX control and .NET class which enables developers to easily create multi-threaded, event-driven server applications. For more information, refer to the documentation for the InternetServer control.
· Updated for full compatibility with the Windows Server 2008 and Windows Vista SP1 platforms, supporting the new security model and TCP/IP stack. It is recommended that applications which target these platforms upgrade to the current version.
· Core networking code updated to use Windows Sockets 2.2 API and removed all previous dependencies on the Windows Sockets 1.1 and deprecated TCP/IP stack in unsupported versions of Windows. SocketWrench is only supported on Windows 2000 and later platforms.
· Redesigned the memory management code used to allocate buffers and internal socket data structures, improving performance and reducing overhead when multiple sessions are created in a multithreaded application.
· Improved the performance of the ReadStream and WriteStream methods under certain high-latency conditions when reading or writing large blocks of data.
· Corrected a problem with the Peek method in the SocketWrench ActiveX control and the InetPeek function in the library where it did not function similarly to the Read method and InetRead function, respectively. This could yield unexpected results because it ignored the blocking state of the socket. The Peek method and InetPeek function will now cause the current thread to block if a blocking socket is being used.
· The ReadEx and WriteEx methods in the SocketWrench ActiveX control has been deprecated and should no longer be used. The Read and Write methods have been extended to support additional arguments.
· Added support for AES (Advanced Encryption Standard) encryption for secure SSL/TLS connections on Windows Server 2008 and Windows Vista.
· Updated the Developers Guide and Technical Reference and made improvements and corrections to the overall documentation.
May 8th, 2007· Corrected a problem with the Peek method in the SocketWrench class where it did not function similarly to the Read method and could yield unexpected results because it ignored the value of the Blocking property. The Peek method will now cause the current thread to block if the Blocking property is set to true.
· Updated the Developer's Guide and Technical Reference documentation. Corrected an issue with the installation which did not include a shortcut to the PDF version of the documentation.