HP 3000 Manuals

Berkeley Sockets Enhancements in MPE/iX 5.0 [ COMMUNICATOR 3000 MPE/iX Release 5.0 (Core Software Release X.50.20) ] MPE/iX Communicators


COMMUNICATOR 3000 MPE/iX Release 5.0 (Core Software Release X.50.20)

Berkeley Sockets Enhancements in MPE/iX 5.0 

by Nicole Robertson and Steve Bitondo 
Commercial Systems Division 

Introduction 

BSD (Berkeley Software Distribution) Sockets is an industry standard
interface for inter-process communications.  BSD Sockets is most commonly
thought of and used as a networking application programmatic interface
(API), allowing applications on separate systems to communicate with each
other.

Basic functionality for BSD Sockets became available on HP 3000 Series
900 systems beginning with MPE/iX Release 4.0.  POSIX support was added
in MPE/iX 4.5, and new functionality has been added for 5.0.  The MPE/iX
implementation supports most of the standard BSD Sockets calls.

Functionality and Supported Calls 

BSD Sockets operate in different communication domains.  Sockets only
exchange information with other sockets in the same domain.  The most
common socket domains are the "UNIX" (local) domain and the "Internet"
(ARPA) domain.  Sockets on the local domain can only be used to
communicate with process on the same node (system).  Sockets on the
Internet domain can communicate with processes on the same or different
node (system).

The two common socket types within the Internet domain are stream sockets
and datagram sockets.  A stream socket is connection-oriented.  It
supports a reliable and sequenced flow of data.  It uses TCP as its
underlying transport protocol.  A datagram socket is connectionless.  It
has less overhead than a stream socket, but its data flow is unreliable
and unsequenced.  It uses UDP as its underlying transport.

BSD Sockets on MPE/iX provides library calls that support both UNIX
(local) domain and Internet (ARPA) domain sockets, and within the
Internet domain, both stream and datagram socket types.  As on most other
systems that also support BSD Sockets, procedure header declaration files
are also provided for the C language.  The MPE/iX implementation is based
on BSD version 4.3.

The following BSD Sockets calls are supported on MPE/iX 5.0:

       accept() 
       bind() 
       close() 
       connect() 
       dup() 
       sfcntl() 
       gethostby xxxx 
       gethostname() 
       getnetby xxxx 
       getpeername() 
       getprotoby xxxx 
       getservby xxxx 
       getsockname() 
       getsockopt() 
       ioctl() 
       listen() 
       read() 
       recv() 
       recvfrom() 
       recvmsg() 
       select() 
       send() 
       sendmsg() 
       sendto() 
       setsockopt() 
       shutdown() 
       socket() 
       socketpair() 
       write() 

Socket calls added for Release 5.0 include ioctl(), getsockopt(), and
setsockopt().  The recvmsg() and sendmsg() functions are now fully
supported (previously these functions were available only for UNIX domain
sockets).  Signals support has also been added for Release 5.0.

Product Structure and Availability 

Support for UNIX (local) domain sockets is part of the MPE/iX Fundamental
Operating System (FOS); there is no separate charge for this.  As part of
FOS, BSD Sockets supports communications between two processes on the
same HP system.

Support for Internet domain sockets, which is required to support
communications between a process on a local system and a process on a
remote system, requires the purchase and installation of any one of the
network link products:

ThinLAN 3000/XL Link            HP 36923A

X.25 XL Network Link            HP 2340A, 2343D, 2345A,
                                2346D/E/F/G, 2355A,
                                36939A

Point-to-Point Network Link/XL  HP 36922A

Token Ring 3000/iX Network      HP J2167A
Link

FDDI 3000/iX                    J2245A

Each network link provides the ARPA/NS transport (TCP/UDP/IP), the device
driver software, and the hardware interface.

The Berkeley Sockets/iX Reference Manual (32650-90372) is part of the
MPE/iX Programming Core Manual Set (36369A).

Quick Comparison:  BSD Sockets and NetIPC Sockets 

NetIPC Sockets is an HP proprietary API for interprocess communication
(IPC). It is very similar to BSD stream sockets in the Internet (ARPA)
domain.  In fact, by selecting the correct options on both sides, a
process on one system that uses the NetIPC API can communicate with a
process on another system that uses the BSD Sockets API.

The NetIPC API is available on HP 1000, HP 3000 (MPE/V), HP 3000 (MPE/XL
and /iX), and HP 9000 (up through HP-UX Release 9.x only) systems.

Like BSD Sockets, support for NetIPC Sockets is available on HP3000
systems with the purchase and installation of any of the network link
products mentioned above.  In other words, if you have one or more of the
network link products, you have both the NetIPC and the BSD Internet
Domain socket functionality on your HP3000.

NetIPC Sockets was developed on HP systems years ago before there was any
clear industry standard for an intersystem IPC. Since then BSD Sockets
has emerged as a far more popular and portable IPC standard.  For this
reason HP recommends that MPE/iX customers choose the BSD Sockets API
over the NetIPC API for all new applications.  Customers with existing
NetIPC based applications on the HP 3000 can continue to use them without
change.



MPE/iX Communicators