Echo server: Difference between revisions

Content added Content deleted
(Nimrod -> Nim)
(Add LFE version of echo server based on the Erlang version)
Line 1,129: Line 1,129:


server.listen(12321, "localhost");</lang>
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}}==
=={{header|Nim}}==