This library package defines a number of predicates manipulating
sockets. They are all rather straight-forward interfaces to the
corresponding BSD-type socket functions with the same name (except
current_host/1). The reader should therefore study the
appropriate documents for a deeper description.
The Domain is either the atom
'AF_UNIX'. They correspond directly to the same domains in
'AF_UNIX' may not be available on non-UNIX
An Address is either
'AF_UNIX'(SocketName). Host is an atomic hostname,
Port is a portnumber and SocketName is an atom denoting a
socket. A reader familiar with BSD sockets will understand this
All streams below can be both read from and written on. All I/O-predicates
operating on streams can be used, for example
current_stream/3, etc. Socket streams are unbuffered
on reads and block buffered on writes.
To load the package, enter the query
| ?- use_module(library(sockets)).
socket_connect/2should not be closed by
socket_close/1as they will be closed when the corresponding stream is closed.
socket_accept(+Socket, -Client, -Stream)
'AF_INET'domain, Client will unified with an atom containing the Internet host address of the connecting entity in numbers-and-dots notation. For other domains, Client will not be used.
socket_select(+TermsSockets, -NewTermsStreams, +TimeOut, +Streams, -ReadStreams)
socket_select/5also waits for connections to the sockets specified by TermsSockets. This argument should be a list of Term
-Socket pairs, where Term, which can be any term, is used as an identifier. NewTermsStreams is a list of Term
-connection(Client,Stream)pairs, where Stream is a new stream open for communicating with a process connecting to the socket identified with Term, Client is the client host address (see
socket_accept/3). If TimeOut is instantiated to
off, the predicate waits until something is available. If TimeOut is
S:Uthe predicate waits at most
Umust be integers >=0. If there is a timeout, ReadStreams and NewTermsStreams are
socket_select(+Sockets, -NewStreams, +TimeOut, +Streams, -ReadStreams)
socket_select(+Socket, -NewStream, +TimeOut, +Streams, -ReadStreams)
socket_select(+Sockets, -NewStreams, -NewClients, +TimeOut, +Streams, -ReadStreams)
socket_select(+Socket, -NewStream, -NewClient, +TimeOut, +Streams, -ReadStreams)
socket_select/5-6also wait for connections to the sockets in the list Sockets. NewStreams is the list of new streams opened for communicating with the connecting processes. NewClients is the corresponding list of client host addresses (see
socket_accept/3). The second form requires one socket (not a list) for the first argument and returns a stream, NewStream, if a connection is made.