Discussion

As a word of warning: Nasa Federal Credit Union has been taking out $5/month from my daughter's savings account. Since this account was a "kid's" account,
it tends to be inactive. I admit that I don't look at the kids' statements every month; I generally do so once per year at tax time. They claim that they
called my daughter, but as its a family phone with an answering machine, I can confidently say that there was no such phone call. So, I advise you not to
set up "kid" savings accounts with NASA-FCU.

The Simple Sockets Library's main purpose is to provide an Application Programming
Interface that strongly resembles the standard C library's file handling
interface. Thus programmers find that the Simple Sockets Library's learning
curve is particularly short. As a secondary purpose the Simple Sockets Library
helps programmers avoid some common programming problems with sockets
(avoided: large buffers that don't transfer in their entirety without special effort,
the Nagle algorithm's practical effect of often limiting one to five transfers per
second, servers whose ports refuse to re-open until two minutes have passed, etc).
Strings are null-byte terminated just like regular C/C++ strings, facilitating
their ease of use in C/C++ programming.

The Simple Sockets Library preferentially uses names for its servers rather
than requiring hard-coded port numbers. Imagine if, instead of files having
names, everyone went about saying "use sector 4 and track 14" or somesuch
thing. This situation reflects what we now have with sockets -- and when two
programs use the same port number for their servers, they can't co-exist
simultaneously on a system. However, especially for those whose programs must
interface with other programs using hard-coded port numbers, the Simple Socket
Library also supports hard-coded port numbers.

The PortMaster (Spm), source code for which is part of the library, provides
a "phonebook" to map server names to dynamically allocated port numbers.
Port numbers thus won't clash; the operating system determines which ones are
currently available and the PortMasters effectively publish the result.
The programmer only need write

Sopen("srvrname","s")

or

Sopen("srvrname","c")

as needed because the Simple Sockets Library
transparently handles all transactions with the PortMasters.

The PortMasters provide security, too, in the form of lists of IP addresses
that they will permit contact from.

Note: when building the Simple Sockets Library, if you receive link messages
complaining that things like bind(), send(), recv(), etc are "undefined
references", that means that the link line isn't including your basic sockets
library/libraries. For example, for Solaris, you will find that there's a "for
Solaris 2.1" comment in the Makefile that instructs you to uncomment out a
LOADLIBES definition that includes "-lnsl" on the link line. You may have to
do some sleuthing on your system using the man pages to find out what your
sockets libraries are called and include them in the LOADLIBES list.

The pre-compiled version of the Simple Sockets Library was compiled with the Borland C/C++ compiler.

Port Requests

Have you ported the Simple Sockets Library to a new operating system? Please
send a copy to NdrOchip@ScampbellPfamily.AbizM so I can make it
available to all. Take out the NOSPAM embedded in the email address
and it'll work. Hate e-spam!