Create a network service that sits on TCP port 12321, which accepts connections on that port, and which echoes complete lines (using a carriage-return/line-feed sequence as line separator) back to clients. No error handling is required. For the purposes of testing, it is only necessary to support connections from localhost (127.0.0.1 or perhaps ::1). Logging of connection information to standard output is recommended.

The implementation must be able to handle simultaneous connections from multiple clients. A multi-threaded or multi-process solution may be used. Each connection must be able to echo more than a single line.

The implementation must not stop responding to other clients if one client sends a partial line or stops reading responses.

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