1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| cat(tom).
cat(tim).
dog(waf).
pet(X):- call(cat(X)).
:- use_module(library(socket)).
:- use_module(library(streampool)).
server(Port) :-
tcp_socket(Socket),
tcp_bind(Socket, Port),
tcp_listen(Socket, 5),
tcp_open_socket(Socket, In, _Out),
add_stream_to_pool(In, accept(Socket)),
stream_pool_main_loop.
accept(Socket) :-
tcp_accept(Socket, Slave, Peer),
tcp_open_socket(Slave, In, Out),
add_stream_to_pool(In, client(In, Out, Peer)).
client(In, Out, _Peer) :-
read_line_to_codes(In, StringCommand),
read_line_to_codes(In, StringParam),
close(In),
string_to_atom(StringCommand,AtomS),
string_to_atom(StringParam,AtomP),
catch(call(AtomS,AtomP,A),
A,
format('Erreur de saisie ~a~n', A)),
format(Out, '~w~n', [A]),
format('Calcul demandé : ~w~n', [A]),
close(Out). |
Partager