Echo server: Difference between revisions

Add LFE version of echo server based on the Erlang version
(Nimrod -> Nim)
(Add LFE version of echo server based on the Erlang version)
Line 1,129:
 
server.listen(12321, "localhost");</lang>
 
=={{header|LFE}}==
<lang lisp>
;;;
;;; This is a straight port from the Erlang version.
;;;
;;; You can run this in the LFE REPL by slurping the file:
;;;
;;; > (slurp "echo_server.lfe")
;;; > (start)
;;;
(defmodule echo
(export (start 0)))
 
(defun start ()
(spawn (lambda ()
(let ((`#(ok ,socket) (gen_tcp:listen 12321 `(#(packet line)))))
(echo-loop socket)))))
 
(defun echo-loop (socket)
(let* ((`#(ok ,conn) (gen_tcp:accept socket))
(handler (spawn (lambda () (handle conn)))))
(lfe_io:format "Got connection: ~p~n" (list conn))
(gen_tcp:controlling_process conn handler)
(echo-loop socket)))
 
(defun handle (conn)
(receive
((tuple 'tcp conn data)
(gen_tcp:send conn data))
((tuple 'tcp_closed conn)
(lfe_io:format "Connection closed: ~p~n" (list conn)))))
</lang>
 
=={{header|Nim}}==
Anonymous user