:- package(socket). main([Port]) :- atom_number(Port,Portno), server_socket__create(Portno,1,ServerSocket), repeat, server_socket__accept(ServerSocket, Socket), handle_command(Socket), fail. handle_command(Socket) :- open(Socket,write,Out,[socket,text]), open(Socket,read,In,[socket]), get_line(In, Line), evaluate_command(Line, Out), close(In), close(Out), socket__close(Socket). evaluate_command(stop, _) :- !, halt(0). evaluate_command(Filename, Channel) :- open(Filename, read, File), repeat, get_char(File, C), ( C == end_of_file ; put_char(Channel, C), fail ), !, flush_output(Channel).