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 e-mail
messages and ANSI terminal emulation. The following libraries are
included in the SocketTools Library Edition:
Domain Name Service Library
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 e-mail 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.
File Encoding Library
The File Encoding library provides functions for encoding and
decoding binary files, typically attachments to e-mail 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 compress and expand data in a
user-supplied buffer or in a file.
File Transfer Protocol Library
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.
Finger Protocol Library
The Finger protocol is used to return information about a user on a
server, as well as general information about the server itself. The
library provides an interface for connecting to a server,
requesting information about a user and returning that information
to the program. Unlike some other protocols, where you can connect
once and then perform any number of operations, the Finger protocol
requires that you establish a new connection for each request that
is made.
Gopher Protocol Library
The Gopher protocol is a document retrieval protocol that pre-dates
the Hypertext Transfer Protocol. The advantage that Gopher offers
is that it is a simpler, lightweight protocol that doesn't have the
inherent overhead and complexity of a typical HTTP server. It is
most commonly used with internal corporate networks to provide
access to documents, although its use is less common today than it
was several years ago. The SocketTools library provides a complete
interface to the Gopher protocol. It includes the ability to list
and select documents, as well as enabling a program to retrieve the
contents of a document for processing or storage on the local
system.
Hypertext Transfer Protocol Library
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
Library
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
Library
The Internet Message Access Protocol (IMAP) is an application
protocol which is used to access a user's e-mail 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 Message Library
The Mail Message library provides an interface for composing and
processing e-mail 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
Library
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 e-mail application, or you can implement your own
full-featured newsgroup client.
News Feed Library
The News Feed library enables an application to download and
process a syndicated news feed in in standard RSS 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 Library
The Post Office Protocol (POP) provides access to a user's new
e-mail 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 e-mail 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 Command Library
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 Library
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
Library
The Simple Mail Transfer Protocol (SMTP) enables applications to
deliver e-mail 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 e-mail 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.
SocketWrench Library
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
the Secure Sockets Layer (SSL) and Transport Layer Security (TLS)
protocols.
Telnet Protocol Library
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 Library
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 Message Library
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 e-mail messages.
Time Protocol Library
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 Library
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.