[ Stream I/O | The ECLiPSe Built-In Predicates | Reference Manual | Alphabetic Index ]

listen(+Stream, +Queue)

Specifies how many connections are accepted for a socket and makes connections available.
Stream
Atom or integer.
Queue
An integer.

Description

listen/2 is a direct link to the listen(2) system call, available on Berkeley systems. Stream must be a socket stream created with socket/3 of the type stream. Queue specifies the length of the connection queue, i.e. how many connections are allowed for this socket. After the call to listen/2, other processes can call connect/2 to connect with this socket, but the I/O is possible only after the server process creates the new socket using accept/3.

Stream sockets are connected using the standard sequence, i.e. socket/3, bind/2, listen/2 and accept/3 on the server and socket/3 and connect/2 on the client. After the sockets are connected, both processes can use them for reading and writing.

Modes and Determinism

Exceptions

(4) instantiation fault
Stream or Queue is not instantiated.
(5) type error
Stream is instantiated, but not to an atom or an integer.
(5) type error
Queue is instantiated but not to an integer.
(170) system interface error
It was not possible to execute the system call.

Examples

Success:
      socket(internet, stream, s), bind(s, Addr), listen(s, 1).

Error:
      listen(s, N)                  (Error 4).
      listen(s, 1.0)                (Error 5).
      listen(null, 2)               (Error 170).



See Also

socket / 3, bind / 2, accept / 3, connect / 2, new_socket_server / 3