The IO$_READVBLK function transfers data received from an
internet host to the specified user buffers. Use both p1 and
p2 arguments to specify a single user buffer. Use the p6 argument
to specify multiple buffers.
For connection-oriented protocols, such as TCP, data is buffered
in system space as a stream of bytes. The IO$_READVBLK function
completes when one of the following occurs:
o There is no more data buffered in system space for this
socket.
o There is no more available space in the user buffer. Data that
is buffered in system space but did not fit in the user buffer
is available to the user in subsequent $QIOs.
For connectionless protocols, datagram and raw socket data is
buffered in system space as a chain of records. The user buffer
specified with a IO$_READVBLK function is filled with data that
is buffered in one record. Each IO$_READVBLK reads data from
one record. The IO$_READVBLK function completes when one of the
following occurs:
o All data from a record is transferred to the user buffer.
o There is no more available space in the user buffer. Any data
remaining in the current record that did not fit in the user
buffer is discarded. A subsequent $QIO reads data from the
next record buffered in system space.
Use the TCP/IP management command SHOW DEVICE_SOCKET/FULL to
display counters related to read operations.
Related Functions
The equivalent Sockets API functions are read(), recv(),
recvfrom(), and recvmsg().
Additional Information:
explode
extract