I'm New to NetTalk
NetTalk is the de-facto standard tool for TCP/IP networking in Clarion.
From using it extensively ourselves, we know why. There simply is no easier
way to add robust networking to your Clarion application. Built by people who
use Clarion, for people who use Clarion, it's no wonder that NetTalk offers
a level of integration not found in other tools.
This section is here to provide you with information that will help you learn
about NetTalk as quickly as possible:
Some tips that will help you use the NetTalk documentation:
Where to now?
- We've split the NetTalk documentation up into a number of smaller files
to make it easier to navigate around and print. When in doubt always return
to the NetTalk Index for navigating the
- JumpStarts are step-by-step guides to get the relevant functionality
into your application in 10-20 minutes. If you are thinking to yourself
"Hey, I've just bought this cool product and I want to see it working
as quickly as possible", then these sections are for you. So keep an
eye out for them.
NetTalk is a hugely powerful Clarion Toolkit, which allows you to add networking
functionality to your application.
Following that we suggest you familiarize yourself with the following sections:
|| This section will help you find out what NetTalk offers and it describes the
difference between the NetAuto and NetSimple classes.
|| A key place for quickly finding help on the different NetAuto and NetSimple objects.
|Definition of NetAuto "Server" and "Client"
|| A good concept definition that is essential for you to grasp before you tackle network applications.
|Using NetTalk in your application
|| A very good guide as to which classes you should use.
|| We've also packaged an excellent selection of examples with NetTalk. You may
often want to read the documentation in conjunction with these examples, that
are found in your Clarion/3rdParty/Examples/NetTalk folder.
|Debug and Logging Section
| This section will help you debug your code. We've also added an
error messages and a
FAQ (Frequently Asked Questions) section.
|| If you need support please check this section first to guide you through the getting support procedure.
Go ahead, and enjoy adding networking to your applications.
More and more users are discovering that NetTalk is the premier TCP/IP
solution for Clarion programmers. This isn't too surprising given the amazing
power, coupled with ease of use, that NetTalk provides. Here's a brief outline
of some of functionality available to you:
1. NetAuto Classes (Desktop Level)
The NetAuto objects support the NetAuto protocol. These objects provide you with the following functionality:
- The tools to add robust, automatic error-recovery, network communication (between two or more computers
or processes) to your applications over a TCP/IP LAN (Local Area Network)
(For, WAN (Wide Area Network) and the Internet we suggest using the NetSimple
- The ability to build network applications without having to use a shared file to communicate
between separate applications. With NetAuto you can just pass your inter-application messages directly from one
application to another. This is far more efficient and faster. No more file polling.
- The ability to let NetAuto take care of all the difficulties associated with socket programming. NetAuto
presents you with easy to use classes that do all the hard work for you.
2. NetSimple Classes (Desktop Level)
The NetSimple classes support normal Winsock and socket communication.
Communications can be in plain text, or secured with TLS. These classes provide you with the following
- The functionality to establish socket connections and listen
on sockets so that you can interface with other programs and other Internet
protocols. e.g. FTP, Web, Mail or C or Java applications etc. NetTalk makes
building client/server network applications a piece of cake.
- Support for a number of standard protocols including
- Email (POP3, SMTP, IMAP)
- Web Client (HTTP, HTTPS)
- Web Sockets Client (WS)
- File Transfer (FTP)
- Lightweight Directory Access (LDAP)
- Interact with online WebServices
- OAuth for Logins
- NetDrive online cloud storage
- Maps and map related functionality.
3. Web Server Classes and Templates (Server and Apps level)
The Web Server classes allow you to create rich, interactive, web
applications in Clarion. The Web server templates are a very
mature, feature rich, template set which allow you to leverage your
existing Clarion skills to create state-of-the-art web applications. A
key aspect of these applications is the ease of deployment, and their
ability to scale up to service large number of users.
make it trivial to create, and deploy, Web Service API's - allowing
other systems to interact with your database, and program functionality,
using industry standards like SOAP and REST.
4. NetDUN Classes (Dial-Up Networking)
The NetDUN class allows you to add Dial-Up functionality into your application.
- The ability to connect and disconnect dial-up connections
- The ability to create, edit or delete dial-up connection settings.
- The ability to detect when a dial-up connection has been made on the computer.
NetTalk builds TCP/IP communication between two or more computers (or processes)
into your application. These processes don't have to be on the same machine
in order to perform the communication. NetTalk
provides you with easy-to-use functionality for adding network communication to
NetTalk comes packed with lots of examples. Here are some selected ones you
should consider using;
\Clarion\Examples\NetTalk\Demo||The primary demo for
NetTalk Desktop functionality. This demo is often used for testing
connectivity, or the settings for any specific feature. It's is a go-to
demo, especially when debugging. |
demo for email functionality. Contains procedures, and table structures,
you can import directly into your application.|
for FTP functionality. Contains procedures that can be imported directly
into your application.|
Copyright, License and Distribution
Copyright and License
This product is copyright 2000-2019 by CapeSoft Software.
NetTalk and associated DLL files may be distributed royalty free with your
files can be distributed
royalty free with your applications.
You are not
allowed to copy
any Template (TPL) files, Library (LIB) files, Source (CLW, INC)
and documentation files.
Each developer needs his own license to use NetTalk. (Need to buy more
This product is provided as-is. CapeSoft Software (trading as CapeSoft),
employees of CapeSoft, and Dealers of CapeSoft products, explicitly accept no liability for any
loss or damages which may occur from using this package. Use of this package constitutes
agreement with this license. This package is used entirely at your own risk.
This product, and all the files contained therein (except where specifically noted otherwise), are
copyrighted by CapeSoft Software who trade as CapeSoft
You will, however, need to copy the following files and distribute them with
your applications if you compile your application in Standalone (ie DLL) mode:
NetTalk uses the DOS driver (which is automatically added to your project by the NetTalk template).
This product includes software developed by the
use in the OpenSSL Toolkit. This code
is Copyright (c) 1998-2017 The OpenSSL Project. All rights reserved. It
is included here under the terms of their
If you use any of the TLS features in NetTalk,
then you will need to distribute additional files. See
for more information.
Web Server applications
You are permitted to ship all the runtime files required by the web server
located in the \Clarion\accessory\Libsrc\win\NetWeb
To support GZIP functionality in the server make sure you deploy the
file as well.
It's best to deploy all DLLs
required into the same folder as the Exe.
Deploying a TLS Client or Server
The target machine needs to have the
Visual Studio 2017 (x86) runtime installed.
Deploying a secure server or client is really no different from deploying a normal
program. However some additional files are probably necessary.
As of the time of writing the files are;
All these files can all be found in your application directory - they are
moved there automatically by the IDE. If you have disabled this IDE function
then you'll find them in the \clarion\accessory\bin folder.
These shipping files are
updated from time to time, but you can update the files yourself at any time.
If you fail to install the redistributable files then you will likely see
a runtime error VCRuntime140.DLL missing.
This file is needed for all servers, secure ones and insecure ones.
This program is only needed if you are deploying a WebServer which will
make use of LetsEncrypt.org to get certificates.
If you are deploying an TLS Client (such as Email, FTP or Web
client) then you will need to ship the caroot.pem
This is the list of root certificates that are "trusted" by the client. The
file shipped with NetTalk is based on the CA certificates supported by
Mozilla (Firefox). They can be downloaded from
root file, maintained by Google, can be downloaded from
file is a set of DH initialization parameters
used to support the DH cipher in OpenSSL in a server. You only need to
distribute this file if you are making a TLS Server of some kind.
You can replace
with your own
set of parameters if you wish. To generate your own file
- Open a Command Prompt window
- Go to the \clarion\accessory\bin
openssl dhparam -out dh2048.pem 2048
- Move the resultant dh2048.pem file to the
Some of the the DLL files are from OpenSSL and are included under the terms of their
ZLIB is the product of Jean-loup Gailly and Mark Adler and is distributed
under the terms of their license at www.zlib.net/zlib_license.html.
If you've done all the above, and you still get an error connecting to a TLS server, then try running OpenSSL.Exe manually to see if it gives an error.
If you get this error;
The missing dll api-ms-win-crt-runtime-l1-1-0.dll is installed with a Windows update.
To resolve this issue, download and install the
Update for Universal C Runtime in Windows from Microsoft.
Note that this update in turn requires that the OS be reasonably up to date.
(For example Windows 7 must be on at least Service Pack 1, and so on.)
NetTalk is enhanced by the inclusion of code from several different sources.
Our thanks and appreciation go to all the following programmers and projects.
Dries Driessen has contributed code to various parts of NetTalk and his
work is included here under license. He was also instrumental in the
which is an integral part of much of the API functionality.
Many thanks to Geoff Robinson for ongoing feedback and contributions to
StringTheory, including bug fixes, improvements and new methods.
Donald Ridley has contributed significant code to the mBuild utility.
NetTalk includes software developed by the
use in the OpenSSL Toolkit. This code
is Copyright (c) 1998-2019 by The OpenSSL Project. All rights reserved. It
is included here under the terms of their
OpenSSL includes cryptographic software written by Eric Young of
This product includes code developed by the
included here under the terms of the
plugins are Copyright by M. Alsup and is included here under
the terms of the MIT license.
plugin is Copyright by Caleb Evans and is included here under
the terms of the MIT license.
plugin is Copyright by Anders Ekdahl and is included here
under the terms of the MIT license.
jQuery File Upload
plugin is Copyright by Sebastian Tschan and is
included here under the terms of the MIT license.
plugin is Copyright by Thomas J Bradley and is included
here under the terms of the
New BSD license
code is Copyright by Tim Cameron Ryan and the FlashCanvar Project. It is
included here under the terms of the MIT license.
file is written and maintained by Douglas Crockford and is in
the public domain.
plugin is Copyright by Christoph Oberhofer and is included here under the
terms of the MIT License.
Copyright by Cosmo Wolfe and is included here under the terms of the Apache
HTML Editor is
Copyright by and is included under the terms of the
HTML editor is
copyright by Imperavi Inc and is included under the terms of their
NetTalk allows developers with a CloudMade API Key to make use of this
Definitions: "Client" and "Server"
Definition: A Client is the process that
initiates the conversation.
Definition: A Server cannot initiate a conversation - it only
responds to incoming requests.
A process that requests information is called a client, while the process that
receives a request and then provides a reply to that request is a server. Thus
a TimeClient is the process that will request the time from the TimeServer,
which supplies the TimeClient with the correct time.
In some cases a process (such as a Chat program) will be both the client and
the server. It can both initiate conversation and respond to conversation. It
initiates conversation when the user clicks the button to send the Chat string,
and it responds when someone else sends it a Chat string.
In fact a client is also always a server (in that it listens to replies),
whereas a server is not a client because it does not initiate communication.
If we use an analogy of the telephone, we find that a telephone is both a client and a server. The telephone
can dial (initiate communication), but it can also receive calls (server mode).
Whereas an answering machine is only ever a server (it never initiates communication),
it only records a conversation initiated by someone else.
Using NetTalk in your Applications
The following section describes how to use NetTalk in your applications.
NetTalk shields you from the complexities of network communication, so you will
soon find that it is easy to implement NetTalk communication in your application.
We've put together some ways that you can use NetTalk in your application
- I want to use the Control or Global Templates - This is a very quick
and simple method to drop NetTalk functionality into your application. It only
gives you the functionality of the pre-built Control Templates. Click
here for the Control Templates section to learn how to do this.
- Use_NetRefresh (Global Template) - uses NetAuto to add functionality
so that data changes in one application get reflected immediately on the screens
of all other applications using this data. (LAN Only)
- ChatControl (Control Template)- adds a NetAuto Chat facility to your application
(allowing you to send text Chat strings over the network).
- CloseAppControls (Control Template)- adds the remote application
closing functionality (allowing someone like a system administrator to
remotely close down all instances of your application) using NetAuto.
- UseRemoteMachineControls (Control Template)- adds the ability to
use NetAuto over a WAN or the Internet by connecting you to remote machines. (LAN
- SendEmailControls (Control Template)- adds the basic controls for using
- FTPControls (a set of 2 extension and control templates, as well
as a utility to import the FTPFiles procedures) - adds the basic FTP
functionality to your program.
- You can use some of the other pre-built NetAuto classes for LAN Only environments -
These include the:
These classes will allow you to quickly add file transfer, time synchronization, remote application closing or chat functionality
to your application. These classes are described in the
Using the Other NetAuto
classes section. The Chat and Remote Application
closing classes are provided as Control
- Time Client/Server
- File Client/Server
- Close Application Client/Server
- Chat Client & Server.
- You can use some of the other pre-built NetSimple classes for accessing Internet Protocols -
These include the:
These classes will allow you to quickly add their respective capabilities to
- I want my application to be able to communicate over a LAN
network to other applications I write - Gain the full power of NetAuto. NetAuto allows you
to make instances of the powerful NetServer and NetClient classes.
You can then derive your own functionality from them. This is the most powerful
and flexible way of using NetAuto. To explain how to do this we have created
three scenarios which will
help you to see examples of how to generate your own network applications. Click
here for the Programming - NetAuto Protocol and NetAuto
to learn how to do this.
- I want my application to be able to communicate over a LAN, WAN or Internet to other
applications I write - While the NetAuto classes offers LAN capabilities
the NetSimple classes offer you the ability to talk over a LAN, WAN or the
Internet. These are very powerful and easy to use classes that allow you to
communicate using standard TCP/IP or UDP. Read more about the
- I want my application to talk to other network applications. You can
talk directly to a port on a machine. This is handy when you want interface
with another process that does not use the NetAuto protocol. For example you
may want to access a Java, C or C# network application. In these cases you will use
the NetSimple class.
- (Very Advanced Users Only): You can call the NetTalk DLL functions
directly. 99% of the functionality of NetTalk has been coded into the NetTalk
control templates which create an easy way for you to use NetTalk. If you are a hard core programmer
you may want to call some of the DLL functions directly. Some of these functions
will allow you to set various options, or get network information. The DLL functions
are described in more detail in the
DLL functions section. You will probably also want to look at the code in
the net*.clw and net*.inc files in your Clarion/LibSrc folder.
We have also included a whole set of examples
in the Clarion/3rdParty/Examples/NetTalk
folder. For more details
see the Examples
You can also look at the source code for the NetTalk classes which are found
in your Clarion/LibSrc
folder. The NetTalk files (net*.clw
) contain the code for all the NetTalk classes.
[End of this document]