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
|
module test_server
import StdEnv
import StdLib
import TCPIP
Start w
# (ok, mbListener, w) = openTCP_Listener 12345 w
| not ok = abort "Couldn't open port 12345\n"
# listener = fromJust mbListener
# (listener, w) = loop listener w //((_,duplexChannel),listener,w) = receive listener w
# w = closeRChannel listener w
= w
where
loop :: !TCP_Listener !*World -> (TCP_Listener, *World)
loop li w
# ((ip,dupChan),li,w) = receive li w
# (msg, rChan, w) = receive dupChan.rChannel w
dupChan = {dupChan & rChannel=rChan}
# (sChan, w) = send msg dupChan.sChannel w
dupChan = {dupChan & sChannel=sChan}
# w = closeRChannel dupChan.rChannel w
# w = closeChannel dupChan.sChannel w
# (io, w) = stdio w
# io = fwrites (toString ip +++ ": " +++ toString msg) io
# (_, w) = fclose io w
| length [1..999999999] == 999999999 = loop li w
|