[erlang-questions] Simple TCP Server

Ari King <>
Tue Dec 17 19:53:37 CET 2013


Hi,

The code below results in "init terminating in do_boot." Seemingly the
problem is on line 5, does anyone see what is wrong with it? Additionally,
I'm trying to pass the port in as a command line argument, but for some
reason it doesn't work and I need to hardcode it.

-module(mock_tcp).
-export([start/1]).

start([Port, Filename]) ->
  {ok, Listen} = gen_tcp:listen(Port, [binary]),
  spawn(fun() -> connect(Listen, Filename) end),
  io:format("Server available on port ~w. Reading from file ~w.", [Port,
Filename]).

connect(Listen, Filename) ->
  {ok, Socket} = gen_tcp:accept(Listen),
  spawn(fun() -> connect(Listen, Filename) end),
  {ok, Device} = file:open(Filename, read),
  get_data(Device, Socket).

get_data(Device, Socket) ->
  case io:get_line(Device) of
    {ok, Data} ->
      gen_tcp:send(Socket, Data),
      get_data(Device, Socket);
    eof ->
      file:close(Device),
      gen_tcp:close(Socket)
  end.

Thanks.

-Ari
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20131217/c57c4a86/attachment.html>


More information about the erlang-questions mailing list