Skip to content

Instantly share code, notes, and snippets.

@josevalim
Created July 29, 2012 11:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save josevalim/3197630 to your computer and use it in GitHub Desktop.
Save josevalim/3197630 to your computer and use it in GitHub Desktop.
TCP example, rewritten from: http://www.erlang.org/doc/man/gen_tcp.html
host = 'localhost' # host needs to be a charlist
{:ok, sock} = :gen_tcp.connect(host, 5678, [:binary, {:packet, 0}])
:ok = :gen_tcp.send(sock, "Some Data")
:ok = :gen_tcp.close(sock)
defmodule Server do
def run do
{ :ok, lsock } = :gen_tcp.listen(5678, [:binary, {:packet, 0}, {:active, false}])
{ :ok, sock } = :gen_tcp.accept(lsock)
{ :ok, bin } = do_recv(sock, [])
:ok = :gen_tcp.close(sock)
IO.puts(bin)
end
defp do_recv(sock, bs) do
case :gen_tcp.recv(sock, 0) do
{ :ok, b } ->
do_recv(sock, [bs, b])
{ :error, :closed } ->
{ :ok, list_to_binary(bs) }
end
end
end
Server.run
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment