The SocketTools .NET Edition includes components that implement fourteen standard Internet application protocols, as well as components which provide support for general TCP/IP networking services, encoding and compressing files, processing e-mail messages and ANSI terminal emulation. The following classes are included in the SocketTools .NET Edition:
Domain Name Service
Class
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. This class enables an application to query one or more
nameservers directly, without depending on the configuration of the
client system.
File Encoding Class
The File Encoding Class provides methods 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 class supports a
number of different encoding methods, including support for the
base64, uucode, quoted-printable and yEnc algorithms. The class can
also be used to compress and expand data in a user-supplied buffer
or in a file.
File Transfer Protocol
Class
The File Transfer Protocol (FTP) Class provides methods for
uploading and downloading files from a remote host, as well as a
variety of remote file management methods. In addition to file
transfers, an application can create, rename and delete files and
directories, list files and search for files using wildcards. The
class provides both high level methods, such as the ability to
transfer multiple files in a single method call, as well as access
to lower level remote file I/O methods.
Finger Protocol Class
The Finger protocol is used to return information about a user on a
remote server, as well as general information about the server
itself. The class 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 Class
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 class 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
Class
The Hypertext Transfer Protocol (HTTP) class 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 class 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
Class
The Internet Control Message Protocol (ICMP) is commonly used to
determine if a remote host 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 remote host 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 remote
host, and can be used to identify potential problems with overall
throughput and latency. The class 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
Class
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 class implements the current standard
for this protocol, and provides methods 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 interface is designed as a superset of the Post Office Protocol
interface, so developers who are used to working with the POP3
class will find the IMAP class very easy to integrate into an
existing application.
Internet Server
Class
The Internet Server ActiveX control provides a simplified interface
for creating event-driven, multi-threaded server applications using
the TCP/IP protocol. The control interface is similar to the
SocketWrench ActiveX control, however it is designed specifically
to make it easier to implement a server application without
requiring the need to manage multiple socket controls. In addition,
the Internet Server control supports secure communications using
the Secure Sockets Layer (SSL) and Transport Layer Security (TLS)
protocols. Note that in order to access the secure features in this
component, a Secure Edition development license is required.
Mail Message Class
The Mail Message class 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 class, 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 method call can be
used to create multipart message, complete with a styled HTML text
body and support for international character sets. The Mail Message
class 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
Class
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
class provides a comprehensive interface for accessing newsgroups,
retrieving articles and posting new articles. In combination with
the Mail Message class 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.
Network Time Class
The NetworkTime class provides an interface for synchronizing the
local system’s time and date with that of a remote server. The
class enables developers to query a server for the current time and
then update the system clock if desired.
Post Office Protocol
Class
The Post Office Protocol (POP) provides access to a user’s new
e-mail messages on a mail server. Methods 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 class provides a complete
interface for managing a user’s mailbox. This class is typically
used in conjunction with the Mail Message class, which is used to
process the messages that are retrieved from the server.
Remote Access Services
Class
The Remote Access Services (RAS) class enables an application to
connect to an Internet Service Provider (ISP) using a standard
Dial-Up Networking connection. Using this class, the application
can discover what dial-up devices are available, what dial-up
networking entries, known as "connectoids", are available on the
local system and allows the program to manage those connections.
Existing connections can be monitored, new connections created and
a single class can be used to manage multiple dial-up connections
if the system has more than one modem. While Windows can be
configured to simply autodial a service provider whenever a network
connection is needed, this component gives your application
complete control over the process of connecting to a service
provider, monitoring that connection and then terminating that
connection if needed.
Remote Command Protocol
Class
The Remote Command protocol is used to execute a command on a
server and return the output of that command to the client. The
class 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 class supports both the rcmd and rshell remote
execution protocols and provides methods 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 class can also be used
to establish a remote terminal session using the rlogin protocol,
which is similar to how the Telnet protocol methods.
Secure Shell Protocol
Class
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 remote host. The SSH control provides an interface for
establishing the connection and handling the standard I/O functions
needed by the program. The control also provides methods 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
Class
The Simple Mail Transfer Protocol (SMTP) enables applications to
deliver e-mail messages to one or more recipients. The class
provides an interface 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 class 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 this class, 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 class can be integrated with this class in order to
provide an extremely simple, yet flexible interface for composing
and delivering mail messages.
SocketWrench Class
The SocketWrench Class provides a higher-level interface to the
Windows Sockets API, designed to be suitable for programming
languages other than C and C++. In addition, the Secure Edition
supports secure communications using the Secure Sockets Layer (SSL)
and Transport Layer Security (TLS) protocols. Note that in order to
access the secure features in SocketWrench, a Secure Edition
development license is required.
Telnet Protocol Class
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 remote host.
The class provides an interface 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 class also provides methods 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 class can be
combined with the Terminal Emulation control to provide complete
terminal emulation services for a standard ANSI or DEC-VT220
terminal.
Terminal Emulation
Control
The Terminal Emulation control provides a comprehensive interface
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 class methods 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 control can be used in conjunction with the Remote
Command or Telnet Protocol class to provide terminal emulation
services for an application, or it can be used independently. For
example, this control could also be used to provide emulation
services for a program that provides serial modem connections to a
server.
Whois Protocol Class
The Whois class 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 class provides an interface for requesting that
information and returning it to the program so that it can be
displayed or processed.