change EOFCode eof_action from end_of_stream to end_of_file, add echo_server.pl example
This commit is contained in:
31
src/prolog/examples/echo_server.pl
Normal file
31
src/prolog/examples/echo_server.pl
Normal file
@@ -0,0 +1,31 @@
|
||||
:- module(echo_server, [echo_server/0,
|
||||
echo_server/1]).
|
||||
|
||||
:- use_module(library(format)).
|
||||
:- use_module(library(sockets)).
|
||||
|
||||
|
||||
echo_server :-
|
||||
echo_server('127.0.0.1').
|
||||
|
||||
|
||||
echo_server(Addr) :-
|
||||
socket_server_open(Addr:Port, ServerSocket),
|
||||
format("echo_server: connection opened at ~w:~d~n", [Addr, Port]),
|
||||
socket_server_accept(ServerSocket, Client, Stream, [eof_action(eof_code)]),
|
||||
format("echo_server: connection accepted from ~a~n", [Client]),
|
||||
!,
|
||||
echo_loop(Stream),
|
||||
socket_server_close(ServerSocket).
|
||||
|
||||
|
||||
echo_loop(Stream) :-
|
||||
read_term(Stream, Term, []),
|
||||
( Term == end_of_file ->
|
||||
true
|
||||
;
|
||||
format("received: ~w~n", [Term]),
|
||||
!,
|
||||
echo_loop(Stream)
|
||||
).
|
||||
|
||||
@@ -356,7 +356,7 @@ impl MachineState {
|
||||
}
|
||||
EOFAction::EOFCode => {
|
||||
let end_of_stream = self.heap.to_unifiable(
|
||||
HeapCellValue::Atom(clause_name!("end_of_stream"), None)
|
||||
HeapCellValue::Atom(clause_name!("end_of_file"), None)
|
||||
);
|
||||
|
||||
stream.past_end_of_stream = true;
|
||||
|
||||
Reference in New Issue
Block a user