Table of Contents (exploded view)
Abstract for IP Sockets Application Programming Interface Guide and Reference
Summary of changes for IP Sockets Application Programming Interface Guide and Reference
Changes made in z/OS Version 2 Release 2
Summary of changes for z/OS Version 2 Release 1
Overview
Introducing TCP/IP concepts
TCP/IP concepts
Understanding sockets concepts
Introducing TCP/IP concepts: Programming with sockets
Introducing TCP/IP concepts: Selecting sockets
Introducing TCP/IP concepts: Socket libraries
Native TCP/IP
UNIX
Introducing TCP/IP concepts: Address families
Introducing TCP/IP concepts: Addressing sockets in an Internet domain
Internet addresses
Ports
Network byte order
Maximum number of sockets
AF_INET socket addresses in an Internet domain
AF_INET6 socket addresses in an Internet domain
Organizing a TCP/IP application program
Client and server socket programs
Client/server socket programs: Iterative server socket programs
Client/server socket programs: Concurrent server socket programs
Client/server socket programs: Call sequence in socket programs
Call sequence in stream socket sessions
Call sequence in datagram socket sessions
Client/server socket programs: Blocking, nonblocking, and asynchronous socket calls
Client/server socket programs: Testing a program using a miscellaneous server
Client/server socket programs: Testing a local machine using a loopback address
Client/server socket programs: Accessing required data sets
Designing programs
Designing an iterative server program
Allocating sockets in an iterative server program
Binding sockets in an iterative server program
Binding with a known port number
Binding using socket call gethostbyname
Binding a socket to a specific port number
Listening for client connection requests in an iterative server program
Accepting client connection requests in an iterative server program
Transferring data between sockets in an iterative server program
Closing a connection in an iterative server program
Active and passive closing in an iterative server program
Shutdown call in an iterative server program
Linger option in an iterative server program
Designing a concurrent server program
Concurrent servers in native MVS environment
MVS subtasking considerations in a concurrent server program
Access to shared storage areas in a concurrent server program
Data set access in MVS
Task and workload management in a concurrent server program
Security considerations in a concurrent server program
Reentrant code in a concurrent server program
Understanding the structure of a concurrent server program
Selecting requests in a concurrent server program
Client connection requests in a concurrent server program
Passing sockets in a concurrent server program
givesocket and takesocket
Giving a socket to a subtask
Taking sockets from the main process
Transferring data between sockets in a concurrent server program
Closing a concurrent server program
Designing a client program
Allocating a socket in a client program
Connecting to a server in a client program
Transferring data between sockets in a client program
Closing a client program
Designing a program to use datagram sockets
Datagram socket characteristics
Understanding datagram socket program structure
Allocating a datagram socket
Binding datagram sockets to port numbers
Streamline data transfer using connect call
Transferring data between datagram sockets
Transferring data between sockets
Transferring data between sockets: Streams and messages
Transferring data between sockets: Data representation
Using send() and recv() calls
The send() and recv() call conversation
Using socket calls in a network application
Reading and writing data from and to a socket
Using sendto() and recvfrom() calls
Designing IPv6 programs
Designing multicast programs
Designing multicast programs: Multicast source filters
Designing multicast programs: IPv4 multicast options
IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP
IP_ADD_SOURCE_MEMBERSHIP and IP_DROP_SOURCE_MEMBERSHIP
IP_BLOCK_SOURCE and IP_UNBLOCK_SOURCE
IP_MULTICAST_IF
IP_MULTICAST_LOOP
IP_MULTICAST_TTL
Designing multicast programs: IPv6 multicast options
IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP
IPV6_MULTICAST_IF
IPV6_MULTICAST_LOOP
IPV6_MULTICAST_HOPS
Designing multicast programs: Protocol-independent multicast options
MCAST_JOIN_GROUP and MCAST_LEAVE_GROUP
MCAST_JOIN_SOURCE_GROUP and MCAST_LEAVE_SOURCE_GROUP
MCAST_BLOCK_SOURCE and MCAST_UNBLOCK_SOURCE
Designing multicast programs: IOCTL multicast commands
SIOCGIPMSFILTER
SIOCGMSFILTER
SIOCSIPMSFILTER
SIOCSMSFILTER
Application program interfaces
C Socket application programming interface
Compiler restrictions with C applications
Compiling and linking C applications
C application compatibility considerations
C socket API: Non-reentrant modules
C socket API: Reentrant modules
C program compiler messages
C program abends
C socket implementation
C socket header files
Manifest.h header file
Prototyping
C structures
C socket API error messages and return codes
C socket calls
accept()
bind()
close()
connect()
endhostent()
endnetent()
endprotoent()
endservent()
fcntl()
getclientid()
getdtablesize()
gethostbyaddr()
gethostbyname()
gethostent()
gethostid()
gethostname()
getibmopt()
getibmsockopt()
getnetbyaddr()
getnetbyname()
getnetent()
getpeername()
getprotobyname()
getprotobynumber()
getprotoent()
getservbyname()
getservbyport()
getservent()
getsockname()
getsockopt()
givesocket()
htonl()
htons()
inet_addr()
inet_lnaof()
inet_makeaddr()
inet_netof()
inet_network()
inet_ntoa()
ioctl()
listen()
maxdesc()
ntohl()
ntohs()
read()
readv()
recv()
recvfrom()
recvmsg()
select()
selectex()
send()
sendmsg()
sendto()
sethostent()
setibmopt()
setibmsockopt()
setnetent()
setprotoent()
setservent()
setsockopt()
shutdown()
sock_debug()
sock_do_teststor()
socket()
takesocket()
tcperror()
write()
writev()
Sample C socket programs
Executing TCPS and TCPC modules
Executing UDPS and UDPC modules
C socket TCP client
C socket TCP server
C socket UDP server
C socket UDP client
X/Open Transport Interface
XTI software requirements
What is provided with XTI
How XTI works in the z/OS environment
Creating an application using the XTI protocol
Coding XTI calls
Coding XTI calls: Initializing a transport endpoint
Coding XTI calls: Establishing a connection
Coding XTI calls: Transferring data
Coding XTI calls: Releasing a connection
Coding XTI calls: Disabling a connection
Coding XTI calls: Managing events
Coding XTI calls: Using utility calls
Coding XTI calls: Using system calls
Compiling and linking XTI applications using cataloged procedures
XTICL
XTIC
XTIS
Understanding XTI sample programs
XTI socket client sample program
XTI socket server sample program
Macro application programming interface
Sockets API environmental restrictions and programming requirements
Sockets API input register information
Sockets API output register information
Sockets API compatibility considerations
Defining storage for the macro API
Understanding common parameter descriptions
Sockets API error messages and return codes
Characteristics of sockets
Task management and asynchronous function processing
Macro API asynchronous function processing: How it works
Asynchronous exit environmental and programming considerations
Using an unsolicited event-exit routine
Diagnosing problems in applications using the macro API
Macros for assembler programs
ACCEPT
BIND
BIND2ADDRSEL
CANCEL
CLOSE
CONNECT
FCNTL
FREEADDRINFO
GETADDRINFO
GETCLIENTID
GETHOSTBYADDR
GETHOSTBYNAME
GETHOSTID
GETHOSTNAME
GETIBMOPT
GETNAMEINFO
GETPEERNAME
GETSOCKNAME
GETSOCKOPT
GIVESOCKET
GLOBAL
INET6_IS_SRCADDR
INITAPI
IOCTL
LISTEN
NTOP
PTON
READ
READV
RECV
RECVFROM
RECVMSG
SELECT
Testing sockets
Read operations
Write operations
Exception operations
Returning the results
MAXSOC parameter
TIMEOUT parameter
SELECTEX
SEND
SENDMSG
SENDTO
SETSOCKOPT
SHUTDOWN
SOCKET
TAKESOCKET
TASK
TERMAPI
WRITE
WRITEV
Macro interface assembler language sample programs
EZASOKAS sample server program for IPv4
EZASOKAC sample client program for IPv4
EZASO6AS sample server program for IPv6
EZASO6AC sample client program for IPv6
CALL instruction application programming interface
CALL instruction API environmental restrictions and programming requirements
CALL instruction API output register information
CALL instruction API compatibility considerations
CALL instruction application programming interface (API)
Understanding COBOL, Assembler, and PL/I call formats
COBOL language call format
Assembler language call format
PL/I language call format
Converting parameter descriptions
Diagnosing problems in applications using the CALL instruction API
CALL instruction API error messages and return codes
Code CALL instructions
ACCEPT
Parameter values set by the application
Parameter values returned to the application
BIND
Parameter values set by the application
Parameter values returned to the application
BIND2ADDRSEL
Parameter values set by the application
Parameter values returned to the application
CLOSE
Parameter values set by the application
Parameter values returned to the application
CONNECT
Parameter values set by the application
Parameter values returned to the application
FCNTL
Parameter values set by the application
Parameter values returned to the application
FREEADDRINFO
Parameter values set by the application
Parameter values returned to the application
GETADDRINFO
Parameter values set by the application
GETCLIENTID
Parameter values set by the application
Parameter values returned to the application
GETHOSTBYADDR
Parameter values set by the application
Parameter values returned to the application
GETHOSTBYNAME
Parameter values set by the application
Parameter values returned to the application
GETHOSTID
Parameter values set by the application
GETHOSTNAME
Parameter values set by the application
Parameter values returned to the application
GETIBMOPT
Parameter values set by the application
Parameter values returned to the application
GETNAMEINFO
Parameter values set by the application
GETPEERNAME
Parameter values set by the application
Parameter Values Returned to the Application
GETSOCKNAME
Parameter values set by the application
Parameter values returned to the application
GETSOCKOPT
GIVESOCKET
Parameter values set by the application
Parameter values returned to the application
INET6_IS_SRCADDR
Parameter values set by the application
Parameter values returned to the application
INITAPI
Parameter values set by the application
Parameter values returned to the application
IOCTL
Parameter values set by the application
Parameter values returned to the application
LISTEN
Parameter values set by the application
Parameter values returned to the application
NTOP
Parameter values set by the application
Parameter values returned to the application
PTON
Parameter values set by the application
Parameter values returned to the application
READ
Parameter values set by the application
Parameter values returned to the application
READV
Parameter values set by the application
Parameter values returned to the application
RECV
Parameter values set by the application
Parameter values returned to the application
RECVFROM
Parameter values set by the application
Parameter values returned to the application
RECVMSG
Parameter values set by the application
Parameter values returned to the application
SELECT
Defining which sockets to test
Read operations
Write operations
Exception operations
MAXSOC parameter
TIMEOUT parameter
Parameter values set by the application
Parameter values returned to the application
SELECTEX
Defining which sockets to test
Read operations
Write operations
Exception operations
MAXSOC parameter
TIMEOUT parameter
Parameter values set by the application
Parameter values returned to the application
SEND
Parameter values set by the application
Parameter values returned to the application
SENDMSG
Parameter values set by the application
Parameter values returned to the application
SENDTO
Parameter values set by the application
Parameter values returned to the application
SETSOCKOPT
SHUTDOWN
Parameter values set by the application
Parameter values returned to the application
SOCKET
Parameter values set by the application
Parameter values returned to the application
TAKESOCKET
Parameter values set by the application
Parameter values returned to the application
TERMAPI
Parameter values set by the application
WRITE
Parameter values set by the application
Parameter values returned to the application
WRITEV
Parameter values set by the application
Parameters returned by the application
Using data translation programs for socket call interface
Assembler language utility programs call format
Data translation
Bit-string processing
EZACIC04
EZACIC05
EZACIC06
EZACIC08
EZACIC09
EZACIC14
EZACIC15
Call interface sample programs
Sample code for IPv4 server program
Sample program for IPv4 client program
Sample code for IPv6 server program
Sample program for IPv6 client program
Common variables used in PL/I sample programs
Common variables used in COBOL sample programs
COBOL call interface sample IPv6 server program
COBOL call interface sample IPv6 client program
REXX socket application programming interface
Overview
Supported REXX APIs
Prerequisites for using REXX sockets
Format of the REXX socket function and return values
REXX programming hints and tips
How structures are represented
Commands
ACCEPT
BIND
BIND2ADDRSEL
CLOSE
CONNECT
FCNTL
GETADDRINFO
GETCLIENTID
GETDOMAINNAME
GETHOSTBYADDR
GETHOSTBYNAME
GETHOSTID
GETHOSTNAME
GETNAMEINFO
GETPEERNAME
GETPROTOBYNAME
GETPROTOBYNUMBER
GETSERVBYNAME
GETSERVBYPORT
GETSOCKNAME
GETSOCKOPT
GIVESOCKET
INET6ISSRCADDR
INITIALIZE
IOCTL
LISTEN
READ
RECV
RECVFROM
RESOLVE
SELECT
SEND
SENDTO
SETSOCKOPT
SHUTDOWN
SOCKET
SOCKETSET
SOCKETSETLIST
SOCKETSETSTATUS
TAKESOCKET
TERMINATE
VERSION
WRITE
Sample programs
Overview of REXX sample programs
The REXX-EXEC RSCLIENT sample program for IPv4
The REXX-EXEC RSSERVER sample program for IPv4
The REXX-EXEC R6CLIENT sample program for IPv6
The REXX-EXEC R6SERVER sample program for IPv6
AT-TLS security definitions for REXX samples
Running the REXX sample programs
Testing the GIVESOCKET and TAKESOCKET commands
Pascal application programming interface
Steps for Pascal language API procedure calls
Pascal language API software requirements
Pascal API header files
Pascal language API compatibility considerations
Pascal language API data structures
Connection state
Connection information record
Notification record
File specification record
Pascal language API: using procedure calls
Notifications
TCP initialization procedures
TCP termination procedure
TCP communication procedures
PING interface
Monitor procedures
UDP communication procedures
Raw IP interface
Timer routines
Host lookup routines
Assembler calls
Other routines
Pascal return codes
Pascal language API procedure calls
AddUserNote
BeginTcpIp
ClearTimer
CreateTimer
DestroyTimer
EndTcpIp
GetHostNumber
GetHostResol
GetHostString
GetIdentity
GetNextNote
GetSmsg
Handle
IsLocalAddress
IsLocalHost
MonQuery
PingRequest
RawIpClose
RawIpOpen
RawIpReceive
RawIpSend
ReadXlateTable
SayCalRe
SayConSt
SayIntAd
SayIntNum
SayNotEn
SayPorTy
SayProTy
SetTimer
TcpAbort
TcpClose
TcpFReceive, TcpReceive, and TcpWaitReceive
TcpFSend, TcpSend, and TcpWaitSend
TcpNameChange
TcpOpen and TcpWaitOpen
TcpOption
TcpStatus
UdpClose
UdpNReceive
UdpOpen
UdpReceive
UdpSend
Unhandle
Sample Pascal program
Building the sample Pascal API module
Running the sample module
Sample Pascal application program
Multitasking C socket sample program
Server sample program in C
The subtask sample program in C
The client sample program in C
Socket call error return codes
System error codes for socket calls
Sockets return codes (ERRNOs)
z/OS UNIX return codes
Additional return codes
Sockets extended ERRNOs
User abend U4093
Address family cross reference
GETSOCKOPT/SETSOCKOPT command values
Abbreviations and acronyms
GETNAMEINFO flags and returned information examples
Related protocol specifications
Accessibility
Bibliography
Index for the IP Sockets API Guide and Reference