File: server.kl1

package info (click to toggle)
klic 3.003-1.1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 7,068 kB
  • ctags: 6,333
  • sloc: ansic: 101,584; makefile: 3,395; sh: 1,321; perl: 312; exp: 131; tcl: 111; asm: 102; lisp: 4; sed: 1
file content (19 lines) | stat: -rw-r--r-- 414 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
:- module main.

main :- unix:unix([bind(inet(12345),
			normal([accept(S)])),
		   stdin(normal(I)),
		   stdout(normal(O))]),
	acc(S),
	loop(I,O).

acc(normal(S)) :-
	builtin:print(accepted),
	X=string#"abc",
	S=[fwrite(X,N),fflush(_)|S1],
	continue(5,X,S1).

continue(0,_,S) :- S=[].
continue(K,X,S) :- K>0 | S=[fwrite(X,N)|S1], continue(~(K-1),X,S1).

loop(I,O) :- I=[getc(C)|IT], O=[putc(C)|OT], loop(IT,OT).