Sometimes the format of data being exchanged between processes is not known in advance and it is not possible to assume that the data sent are valid Prolog terms. This package provides Prolog streams for each connection that can be read from or written to using the stream input/output predicates. For more information about Prolog streams, see ref-iou-str.
Although these streams can be written to or read from using the
standard input/output predicates supplied by Prolog, they must be
tcp_shutdown/1 instead of
the database internal to
library(tcp) will become inconsistent.
There is a subtle point about
end_of_file: in a correct implementation
of TCP it is possible to receive zero-length packets, so that a socket
should be able to signal end-of-file repeatedly just like a
terminal. So does
) mean "connection lost
to Socket", or does it mean "zero-length packet received from
end_of_file causes the connection to be shutdown. Reading the
streams yourself lets you decide what
end_of_file means on your