Berkeley Sockets Enhancements in MPE/iX 5.0 [ COMMUNICATOR 3000 MPE/iX General Release 5.0 (Core Software Release C.50.00) ] MPE/iX Communicators
COMMUNICATOR 3000 MPE/iX General Release 5.0 (Core Software Release C.50.00)
Berkeley Sockets Enhancements in MPE/iX 5.0
by Nicole Saeger 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 processes 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()
fcntl()*
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()
* fcntl will be supported in a soon-to-be released patch to the MPE/iX
General Release 5.0. Use sfcntl() until you receive this patch.
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 BSD Sockets is part of the MPE/iX Fundamental Operating
System (FOS) as of MPE/iX General Release 5.0. There is no separate
charge for this.
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.
NETIPC Sockets is supported over TCP and over direct X.25 Level 3. BSD
Sockets is supported over UDP and TCP--it does not support direct X.25
Level 3.
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, NetIPC Sockets is also part of FOS on HP3000 systems as of
MPE/iX General Release 5.0.
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