The SocketTools Library Edition includes libraries that implement
fourteen standard Internet application protocols, as well as libraries
which provide support for general TCP/IP networking services, encoding
and compressing files, processing email messages and ANSI terminal
emulation. The following libraries are included in the SocketTools
Library Edition:
Application Storage
The Web Services
library provides a private cloud storage API for uploading and
downloading shared data files which are available to your application.
This is primarily intended for use by developers to store configuration
information and other data generated by the application. For example,
you may want to store certain application settings, and the next time
a user or organization installs your software, those settings can be
downloaded and restored.
Domain Name Service
The Domain Name Service (DNS) protocol is what applications use to
resolve domain names into Internet addresses, as well as provide
other information about a domain, such as the name of the mail
servers which are responsible for receiving email for users in that
domain. The DNS library enables an application to query one or more
nameservers directly, without depending on the configuration of the
client system.
Encoding, Compression and Encryption
The Encoding, Compression and Encryption library provides functions for encoding and
decoding binary files, typically attachments to email messages. The
process of encoding converts the contents of a binary file to
printable text. Decoding reverses the process, converting a
previously encoded text file back into a binary file. The library
supports a number of different encoding methods, including support
for the base64, uucode, quoted-printable and yEnc algorithms. The
library can also be used to encrypt data using AES-256 bit encryption,
and compress data in a user-supplied buffer or in a file.
File Transfer Protocol
The File Transfer Protocol (FTP) library provides functions for
uploading and downloading files from a server, as well as a
variety of remote file management functions. In addition to file
transfers, an application can create, rename and delete files and
directories, list files and search for files using wildcards. The
library provides both high level functions, such as the ability to
transfer multiple files in a single function call, as well as access
to lower level remote file I/O functions. This API supports secure
file transfers using FTPS (FTP+TLS) and SFTP (FTP+SSH).
GeoIP Location
The Web Services
library provides an API for obtaining geographical information about
the physical location of the computer system based on its external IP
address. This can enable developers to know where their application is
being used, and provide convenience functionality such as
automatically completing a form based on the location of the user.
Hypertext Transfer Protocol
The Hypertext Transfer Protocol (HTTP) library provides an interface
for accessing documents and other types of files on a server. In some
ways it is similar to the File Transfer Protocol in that it can be
used to upload and download files; however, the protocol has expanded
to also support remote file management, script execution and
distributed authoring over the World Wide Web. The SocketTools
Hypertext Transfer Protocol library implements version 0.9, 1.0 and
1.1 of the protocol, including features such as support for proxy
servers, persistent connections, user-defined header fields and
chunked data.
Internet Control Message Protocol
The Internet Control Message Protocol (ICMP) is commonly used to
determine if a server is reachable and how packets of data are
routed to that system. Users are most familiar with this protocol as
it is implemented in the ping and tracert command line utilities. The
ping command is used to check if a system is reachable and the amount
of time that it takes for a packet of data to make a round trip from
the local system, to the server and then back again. The tracert
command is used to trace the route that a packet of data takes from
the local system to the server, and can be used to identify
potential problems with overall throughput and latency. The library
can be used to build in this type of functionality in your own
applications, giving you the ability to send and receive ICMP echo
datagrams in order to perform your own analysis.
Internet Message Access Protocol
The Internet Message Access Protocol (IMAP) is an application
protocol which is used to access a user's email messages which are
stored on a mail server. However, unlike the Post Office Protocol
(POP) where messages are downloaded and processed on the local
system, the messages on an IMAP server are retained on the server and
processed remotely. This is ideal for users who need access to a
centralized store of messages or have limited bandwidth. For example,
traveling salesmen who have notebook computers or mobile users on a
wireless network would be ideal candidates for using IMAP. The
SocketTools IMAP library implements the current standard for this
protocol, and provides functions to retrieve messages, or just
certain parts of a message, create and manage mailboxes, search for
specific messages based on certain criteria and so on. The API is
designed as a superset of the Post Office Protocol API, so developers
who are used to working with the POP3 library will find the IMAP
library very easy to integrate into an existing application.
Mail Messages
The Mail Message (MIME) library provides an interface for composing and
processing email messages and newsgroup articles which are
structured according to the Multipurpose Internet Mail Extensions
(MIME) standard. Using this library, an application can easily create
complex messages which include multiple alternative content types,
such as plain text and styled HTML text, file attachments and
customized headers. It is not required that the developer understand
the complex MIME standard; a single function call can be used to
create multipart message, complete with a styled HTML text body and
support for international character sets. The Mail Message library
can be easily integrated with the other mail related protocol
libraries, making it extremely easy to create and process MIME
formatted messages.
Network News Transfer Protocol
The Network News Transfer Protocol (NNTP) is used with servers that
provide news services. This is similar in functionality to bulletin
boards or message boards, where topics are organized hierarchically
into groups, called newsgroups. Users can browse and search for
messages, called news articles, which have been posted by other
users. On many servers, they can also post their own articles which
can be read by others. The largest collection of public newsgroups
available is called USENET, a world-wide distributed discussion
system. In addition, there are a large number of smaller news
servers. For example, Microsoft operates a news server which
functions as a forum for technical questions and announcements. The
SocketTools library provides a comprehensive interface for accessing
newsgroups, retrieving articles and posting new articles. In
combination with the Mail Message library to process the news
articles, SocketTools can be used to integrate newsgroup access with
an existing email application, or you can implement your own
full-featured newsgroup client.
News Feeds
The News Feed (RSS) library
enables an application to download and process a syndicated news feed
in in standard format. News feeds can be accessed remotely from a
web server, or locally as an XML formatted text file. The source of
the feed is determined by the URI scheme that is specified. If the
http or https scheme is specified, then the feed is retrieved from a
web server. If the file scheme is used, the feed is considered to be
local and is accessed from the disk or local network. The News Feed
library provides an API that enables you to open a feed by URL
and iterate through each of the items in the feed or search for a
specific feed item. The library also provides a function that can be
used to parse a string that contains XML data in RSS format, where the
feed may have been retrieved from other sources such as a database.
Post Office Protocol
The Post Office Protocol (POP3) provides access to a user's new email
messages on a mail server. Functions are provided for listing
available messages and then retrieving those messages, storing them
either in files or in memory. Once a user's messages have been
downloaded to the local system, they are typically removed from the
server. This is the most popular email protocol used by Internet
Service Providers (ISPs) and the SocketTools library provides a
complete interface for managing a user's mailbox. This library is
typically used in conjunction with the Mail Message library, which is
used to process the messages that are retrieved from the server.
Remote Commands
The Remote Command library is used to execute a command on a server
and return the output of that command to the client. The SocketTools
library provides an interface to this protocol, enabling applications
to remotely execute a command and process the output. This is most
commonly used with UNIX based servers, although there are
implementations of remote command servers for the Windows operating
system. The SocketTools library supports both the rcmd and rshell
remote execution protocols and provides functions which can be used
to search the data stream for specific sequences of characters. This
makes it extremely easy to write Windows applications which serve as
light-weight client interfaces to commands being executed on a UNIX
server or another Windows system. The library can also be used to
establish a remote terminal session using the rlogin protocol, which
is similar to how the Telnet protocol functions.
Secure Shell Protocol
The Secure Shell (SSH) protocol is used to establish a secure
connection with a server which provides a virtual terminal session
for a user. Its functionality is similar to how character based
consoles and serial terminals work, enabling a user to login to the
server, execute commands and interact with applications running on
the server. The SSH library provides an API for establishing the
connection and handling the standard I/O functions needed by the
program. The library also provides functions that enable a program to
easily scan the data stream for specific sequences of characters,
making it very simple to write light-weight client interfaces to
applications running on the server.
Simple Mail Transfer Protocol
The Simple Mail Transfer Protocol (SMTP) enables applications to
deliver email messages to one or more recipients. The library
provides an API for addressing and delivering messages, and extended
features such as user authentication and delivery status
notification. Unlike Microsoft's Messaging API (MAPI) or
Collaboration Data Objects (CDO), there is no requirement to have
certain third-party email applications installed or specific types
of servers installed on the local system. The SocketTools library can
be used to deliver mail through a wide variety of systems, from
standard UNIX based mail servers to Windows systems running Exchange
or Lotus Notes and Domino. Using the SocketTools library, messages
can be delivered directly to the recipient, or they can be routed
through a relay server, such as an Internet Service Provider's mail
system. The Mail Message library can be integrated with this library
in order to provide an extremely simple, yet flexible interface for
composing and delivering mail messages.
SocketWrenchy
The SocketWrench library provides a higher-level interface to the
Windows Sockets API, designed to be suitable for programming
languages other than C and C++. If needed, function calls can be
intermixed between the SocketWrench and Windows Sockets libraries. In
addition, the SocketWrench supports secure communications using Transport Layer Security (TLS).
Telnet Protocol
The Telnet protocol is used to establish a connection with a server
which provides a virtual terminal session for a user. Its
functionality is similar to how character based consoles and serial
terminals work, enabling a user to login to the server, execute
commands and interact with applications running on the server.
The Telnet library provides an API for establishing the connection,
negotiating certain options (such as whether characters will be
echoed back to the client) and handling the standard I/O functions
needed by the program. The library also provides functions that
enable a program to easily scan the data stream for specific
sequences of characters, making it very simple to write light-weight
client interfaces to applications running on the server. This library
can be combined with the Terminal Emulation library to provide
complete terminal emulation services for a standard ANSI or DEC-VT220
terminal.
Terminal Emulation
The Terminal Emulation library provides a comprehensive API for
emulating an ANSI or DEC-VT220 character terminal, with full support
for all standard escape and control sequences, color mapping and
other advanced features. The library functions provide both a high
level interface for parsing escape sequences and updating a display,
as well as lower level primitives for directly managing the virtual
display, such as controlling the individual display cells, moving the
cursor position and specifying display attributes. This library can
be used in conjunction with the Remote Command or Telnet Protocol
library to provide terminal emulation services for an application, or
it can be used independently. For example, this library could also be
used to provide emulation services for a program that provides serial
modem connections to a server.
Text Messaging
The Text Message
library enables applications to send text messages to mobile devices.
It provides an interface that can be used to obtain information about
the wireless service provider that is associated with the phone number
for a smartphone or other mobile device, and can send a message with a
single function call. Messages can be delivered directly to the
service provider's gateway, or can be relayed through a local mail
server. With this API, an application can send text message alerts
when certain conditions occur (such as an error) or as a notification
mechanism that's used in addition standard email messages.
Time Protocol
The Time Protocol library provides an interface for synchronizing the
local system's time and date with that of a server. The
library enables developers to query a server for the current time and
then update the system clock if desired.
Whois Protocol
The Whois protocol library provides an interface for requesting
information about an Internet domain name. When a domain name is
registered, the organization that registers the domain must provide
certain contact information along with technical information such as
the primary name servers for that domain. The Whois protocol enables
an application to query a server which provides that registration
information. The SocketTools library provides an API for requesting
that information and returning it to the program so that it can be
displayed or processed.