Skip to content

Instantly share code, notes, and snippets.

@kennyp
Created April 14, 2016 20:18
Show Gist options
  • Save kennyp/23f54d2b5267587d2597a2267356d682 to your computer and use it in GitHub Desktop.
Save kennyp/23f54d2b5267587d2597a2267356d682 to your computer and use it in GitHub Desktop.
require Logger
defmodule Playground do
def accept(port) do
{:ok, socket} = :gen_tcp.listen(port, [:binary, packet: :line,
active: false, reuseaddr: true])
Logger.info "Accepting connections on port #{port}"
loop_acceptor(socket)
end
def loop_acceptor(socket) do
{:ok, client} = :gen_tcp.accept(socket)
serve(client)
loop_acceptor(socket)
end
def serve(socket) do
socket
|> read_line
|> write_line(socket)
serve(socket)
end
def read_line(socket) do
{:ok, data} = :gen_tcp.recv(socket, 0)
data
end
def write_line(line, socket) do
:gen_tcp.send(socket, line)
end
end
port = (System.argv |> List.first) || "8787"
port
|> Integer.parse
|> elem(0)
|> Playground.accept
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment