Welcome to West Wind Client Tools

West Wind Client Tools is a suite of FoxPro classes that provide rich Internet and general purpose functionality to FoxPro applications. The library also includes many useful utility classes for every day FoxPro development tasks.

Internet features include SMTP Email support, full featured HTTP Web access, FTP file transfers and management, low level TCP/IP access, JSON REST Service access and a host of Internet support functions.

General purpose tools include a light weight business object framework, an easy to use SQL client library, a .NET integration library, JSON and XML serializers, a Markdown parser, a powerful FoxPro based scripting class, and a number of very rich generic utility libraries for common every day FoxPro tasks.

Internet Features

  • SMTP Email support
    SMTP Send Mail capability both in blocking synchronous and asynchronous modes. Support for file attachments, CCs and BCCs, special content types (HTML or XML messages for example) and more. All you need is an SMTP mail server to send message through and off you go. The latest version also supports SSL based connections.

  • HTTP - Access Web content from FoxPro
    Need to grab any content from the Web in your applications? Retrieve Web page content for screen scraping, talk to REST , POX or other Web Service APIs, submit and drive Web based forms and send JSON, XML or binary data from client to server and back. wwHTTP is a complete HTTP client libary for FoxPro that lets receive and send data over the Web using HTTP with ease. Send URLEncoded POST data to servers, upload huge files via HTTP, access SSL content, handle GZip encoded and authenticated content. Best of all it's very easy to use: all it takes is two lines of code to retrieve content and only a few additional lines to POST content to a server.

  • Advanced HTTP support
    In addition, tools required for efficient HTTP operation are also included such as fast URLEncoding/URLDecoding using fast C code routines, JSON encode/decoding, binary packaging for DBF files for transfer over HTTP, a GZip decoding and encoding component, as well as inclusion of JSON and XML classes can be used to serialize FoxPro cursors and objects.

  • FTP and SFTP - Transfer files
    New updated wwFTP class allows for file downloads and uploads. Low and high level methods for simple transfers and control over the connection are supported. Use active and passive FTP. The tools also support SFTP (SSH over SSH).

  • Low Level TCP/IP Socket Access
    Create low level TCP/IP socket connections and create socket servers with with the wwSocket class to access Internet or TCP/IP services. This class is very easy to use and includes high-level methods that session and transaction based TCP/IP access very easy.

  • IP Address validation
    Support for domain lookup from IP address and IP Address from domain name.

  • Common Helpers
    UrlEncode, UrlDecode, HtmlEncode, HtmlDecode, generating Mime dates, JSON and XML Serializer. A JSON Service client makes it very easy to call JSON REST services.

Data Access Classes and Conversion Classes

  • wwBusinessObject Class
    The wwBusinessObject class is an extremly easy to use, single level business object class. It implements both the business and data tier in a single object to provide ease of use and maximum performance. The base object provides core data access functionality (Load, Save, Query, New etc.) through its base class methods. Query based data access is also supported through native Fox syntax or using the class methods which can route to the appropriate backend. Fox or SQL Server are natively supported. SQL Server is supported with SQL Passthrough commands. Remote Web data is also supported against any FoxPro based Web backend (Web Connection, ASP+COM, FoxISAPI etc.) Web data can run against a SQL backend (with some limitations a Fox backend can be used as well).

  • wwSQL Class
    The wwSQL class provides an light weight object wrapper around the FoxPro SqlPassthrough object. Use easy methods to Execute, ExecuteNonQuery, ExecuteScalar It provides handle abstraction and a simplified interface to executing SQL commands and managing connections. The class provides error handling and error recovery for connections and can automatically re-connect on connection errors. There are high-level helper methods that can update and insert data using objects, automatic Unicode conversion support, support for binary data updates and much more.

  • wwDotNetBridge Class
    Access just about any .NET component from Visual FoxPro and do it without requiring COM registration. The library allows access to components not supported with plain COM Interop such as enumerations, value structures, generic types, arrays and collections and a host of common but COM unsupported types. wwDotnetBridge removes many of the limitations of .NET COM Interop and allows you to tap into the full power and features of the .NET framework.

  • wwJsonSerializer and wwJsonServiceClient
    The JSON serializer provides reliable JSON serialization and deserialization of FoxPro objects/values to and from JSON. The serializer is fast and highly reliable using the JSON.NET serializer. The serializer returns results as self-contained objects. wwJsonServiceClient provides a wrapper for easily calling JSON REST services, handing the HTTP calls and JSON serialization transparently.

  • wwXML Class
    wwXML is a powerful data conversion class that lets you convert Fox cursors and object to and from XML. This class is more flexible than VFP 7's native commands and provides a number of additional features including direct support for .NET datasets and of course the ability to persist and restore objects.

  • MarkdownParser Class
    This class lets you easily parse Markdown text into HTML in your application. Markdown is a simple and easy to type text format that can be turned into HTML and is an ideal solution for dealing with HTML text in FoxPro.

General Purpose Classes

  • wwScripting Class
    The wwScripting class lets you create HTML Scripts using FoxPro using a dynamic ASP like (<% %>) dynamic scripting engine. The engine merges HTML templates either from string or disk and turns them into FoxPro code that can be executed to dynamic string output. It's a great tool for generating dynamic HTML content, mail merges, or as a code generation tool. This class is also used by Web Connection to drive the HTML Scripting engine. Scripts can be modified at runtime and changes detected in real time for maximum flexibility without loss of performance. You can even use partials and layout pages to reuse markup easily. Great tool to add dynamic scripting or HTML rendering to your applications.

  • wwCollection Classes
    FoxPro includes a collection class but unfortunately that class has horrible performance and is unable to trap to trap for missing elements without generting errors, plus is missing many common collection features. The wwCollection library provides wwCollection, wwNameValueCollection and wwStack classes. Classes are managed through internal arrays and provide 3x the performance of native FoxPro collections for adding and iterating, as well as many useful features not found on the built-in collection class.

  • wwEncryption Class
    You can use this class to create encrypt or hash strings using common encryption protocols. You can creates one-way hashes using MD5, SHA1, SHA256, SHA384, SHA512, HMACMD5, HMACSH1, HMACSHA256, HMAC384, HMAC512 encryption protocols. You can also two-encrypt strings and byte arrays using TripleDES encryption. Perfect for hashing passwords in applications or for two-way encryption of reusable data.

  • wwCodeUpdate - Update your Applications
    This useful class provides everything needed to have your applications check for version information online (in an XML file) and download and install updates. The class provides for online checking of the latest version available, version comparision, file download via HTTP, swapping files and restarting the current application.

Utility Classes

  • wwCache - A key value cache class that allows you to easily cache string results in a cursor for later reuse. Very useful especially for Web applications where content or partial content can be easily cached for reuse without regenerating the content.

  • wwConfig - A very useful configuration utility that can persist data from an object into a configuration file (XML, INI or the registry) and can be used in any application as a single access configuration manager object.

  • wwXMLState - This class can be used to manage dynamic properties inside of a string or memo field. It's XML based and stores multiple values in a single string. Useful for extending database schemas without changing the structure and to store data more efficiently when data is sparse and would waste space as a field.

  • wwEval - A 'safe execution' class that can be used to run user specified or unknown code. Sort of a poor man's Try/Catch implementation that allows you to run code that potentially could fail safely and receive error information. Execute single commands, expressions and even entire code blocks. Also includes MergeText() functionality to parse script like pages using ASP style syntax and wwEvalTimer which allows you to generically fire delayed expressions and code blocks.

  • wwUtils and wwAPI Libraries - These extensive function libraries contains a variety of general purpose functions from string formatting, to HTML formatting, to debugging, COM configuration, viewing output in various text formats and even several GUI pop up routines. The API library abstracts many often used Windows API functions in simple wrappers.

Useful Tools

Client Tools also includes a number of tools that are useful in the course of development of applications:

  • Structure Exporter - Takes VFP table structures and exports it to text in various ways: CREATE TABLE statements, object declarations, field list, Help Builder field list and several more.

  • Text Wrapper - Useful tool to take a block of text and create string based code writes out this text via code.

Internet Tools

Access common Internet Protocols like HTTP, HTTPS, SMTP, FTP and SFTP with easy to use FoxPro based libraries.

Business Tools

Use our easy to use business object classes to organize your code, or the wwSql class


Convert between commonly used formats like JSON and XML with serializer and deserializers that make short work of exchanging common data formats.


Access .NET easily with wwDotnetBridge, handle app configuration with wwConfig, generate PDF documents from Fox reports with wwPdf, execute FoxPro scripts with wwScripting, parse Markdown with our MarkdownParser class.

FoxPro all the way

Use the tools you already know: Write FoxPro code for your Web application logic and use the Visual FoxPro IDE to edit, run and debug your code. Set breakpoints, break on errors, and use your existing FoxPro business logic code.

The Source is yours

The Client Tools ship with complete source code for all the FoxPro components. There's no blackbox code - you can step through all of the framework and modify it as needed. Fix it, change it, own it - no built-in obsolescence in this framework.

Don't take our Word for it: Try it out

There's so much more to the West Wind Internet & Client Tools and the best way to find out about it all is to try it out for yourself. The library is available in a fully functional shareware version that contains the full framework of features, but doesn't include source code. With it you can build and test your Web applications to check out Web Connection's features and functionality. Get started today!.

Free Download Purchase...

Get it

You can download the shareware version and try West Wind Internet & Client Tools for free. The shareware version is fully functional, but it ships as a pre-compiled app file to load libraries from and shows shareware notifications.

  • Visual FoxPro 9.0
  • .NET Framework 4.5 or later (recommended)

Got questions, suggestions or just want to discuss West Wind Internet & Client Tools development issues? Then come and hang out on our new and redesigned West Wind Message Board to ask questions, discuss development issues or simply brain storm ideas with the authors and other FoxPro developers.

Visit the Message Board