A server issues the ACCEPT call to accept a connection
request from a client. The call points to a socket that was previously
created with a SOCKET call and marked by a LISTEN call.
The ACCEPT call is a blocking call. When issued, the ACCEPT
call:
- Accepts the first connection on a queue of pending connections.
- Creates a new socket with the same properties as s, and returns
its descriptor in RETCODE. The original sockets remain available to
the calling program to accept more connection requests.
- The address of the client is returned in NAME for use by subsequent
server calls.
Note: - The blocking or nonblocking mode of a socket affects the operation
of certain commands. The default is blocking; nonblocking mode can
be established by use of the FCNTL and IOCTL calls. When a socket
is in blocking mode, an I/O call waits for the completion of certain
events. For example, a READ call blocks until the buffer contains
input data. When an I/O call is issued: if the socket is blocking,
program processing is suspended until the event completes; if the
socket is nonblocking, program processing continues.
- If the queue has no pending connection requests, ACCEPT blocks
the socket unless the socket is in nonblocking mode. The socket can
be set to nonblocking by calling FCNTL or IOCTL.
- When multiple socket calls are issued, a SELECT call can be issued
prior to the ACCEPT to ensure that a connection request is pending.
Using this technique ensures that subsequent ACCEPT calls do not
block.
- TCP⁄IP does not provide a function for screening clients. As a result,
it is up to the application program to control which connection requests
it accepts, but it can close a connection immediately after discovering
the identity of the client.
The following requirements apply to this call:
Requirement |
Description |
---|
Authorization: |
Supervisor state or problem state, any PSW key |
Dispatchable unit mode: |
Task |
Cross memory mode: |
PASN = HASN |
Amode: |
31-bit or 24-bit |
ASC mode: |
Primary address space control (ASC) mode |
Interrupt status: |
Enabled for interrupts |
Locks: |
Unlocked |
Control parameters: |
All parameters must be addressable by the caller
and in the primary address space |
Figure 1 shows an example of
ACCEPT call instructions.
Figure 1. ACCEPT call instructions example WORKING-STORAGE SECTION.
01 SOC-FUNCTION PIC X(16) VALUE IS 'ACCEPT'.
01 S PIC 9(4) BINARY.
*
* IPv4 Socket Address Structure.
*
01 NAME.
03 FAMILY PIC 9(4) BINARY.
03 PORT PIC 9(4) BINARY.
03 IP-ADDRESS PIC 9(8) BINARY.
03 RESERVED PIC X(8).
*
* IPv6 Socket Address Structure.
*
01 NAME.
03 FAMILY PIC 9(4) BINARY.
03 PORT PIC 9(4) BINARY.
03 FLOW-INFO PIC 9(8) BINARY.
03 IP-ADDRESS.
05 FILLER PIC 9(16) BINARY.
05 FILLER PIC 9(16) BINARY.
03 SCOPE-ID PIC 9(8) BINARY.
01 ERRNO PIC 9(8) BINARY.
01 RETCODE PIC S9(8) BINARY.
PROCEDURE DIVISION.
CALL 'EZASOKET' USING SOC-FUNCTION S NAME ERRNO RETCODE.