RosettaCodeData/Task/Echo-server/Zkl/echo-server.zkl

17 lines
488 B
Plaintext

const PORT=12321;
pipe:=Thread.Pipe(); // how server tells thread to connect to user
fcn echo(socket){ // a thread, one per connection
text:=Data();
while(t:=socket.read()){
text.append(t);
if(text.find("\n",text.cursor)){ text.readln().print(); }
}
// socket was closed
}
// Set up the server socket.
server:=Network.TCPServerSocket.open(PORT);
println("Listening on %s:%s".fmt(server.hostname,server.port));
server.listen(echo.launch); // Main event loop