| Allegro CL version 10.1 Unrevised from 10.0 to 10.1. 10.0 version |
Arguments: sock size &key buffer extract
This generic function is used to read from a datagram socket. You must specify a size bigger than the size of the message you expect (usually the rest of the datagram will be thrown away if it doesn't all fit).
If the buffer argument is given then it should be
a Lisp vector of some raw type (like (unsigned-byte
8)
but definitely not t
) of at
least size bytes that will be used to read in the
datagram. If buffer is not given then a fresh
buffer will be created (of the type appropriate to the format of the
socket).
The buffer argument may be a
character
vector. In this case receive-from will create a temporary buffer of
type (unsigned-byte 8)
into which to read the
octets and then octets-to-string will be used to convert those
octets to characters. If you want to save the creation of this
temporary array for each call to receive-from you should pass an
(unsigned-byte 8)
array in as the buffer. When
using an 8-bit character Lisp (e.g., alisp8 or mlisp8-- see Allegro CL Executables:
alisp, alisp8, mlisp, mlisp8, allegro, allegro-ansi in
startup.htm), no temporary buffer is created and no
conversion occurs.
If extract is unspecified or nil
then the first value returned is the buffer used
to read the data. If extract is true then the
first value returned is a subsequence of the buffer, that subsequence
being that part of the buffer that contains the data just read.
The second value returned is the number of bytes read by receive-from.
In the case of an :internet
socket, the third value
returned is the 32-bit internet address or the IPv6 address of the
sender of the data and the fourth value is the port number.
In the case of a :file
socket, the third (and last)
value returned is the filename of the sender's socket (or
""
if there is no filename).
See socket.htm for general information on sockets in Allegro CL.
Copyright (c) 1998-2022, Franz Inc. Lafayette, CA., USA. All rights reserved.
This page was not revised from the 10.0 page.
Created 2019.8.20.
| Allegro CL version 10.1 Unrevised from 10.0 to 10.1. 10.0 version |