[erlang-questions] Line Receiver example?

Jarrod Roberson jarrod@REDACTED
Mon Apr 27 21:23:49 CEST 2009


2009/4/27 Jarrod Roberson <jarrod@REDACTED>

>
>
> 2009/4/27 Oscar Hellström <oscar@REDACTED>
>
>> Hi Jarrod,
>>
>> I guess what you're looking for is the packet option for sockets. In
>> case you're using a TCP socket you can either open your listen socket
>> with the option {packet, line}, gen_tcp:listen(Port, [{packet, line}]),
>> or you can set it to line based parsing later by issuing
>> inet:setopts(Socket, [{packet, line}]). In case of UDP you need to open
>> the socket with gen_upd:open(Port, [{packet, line}]). inet:setopts/2
>> will also work for a UDP socket.
>>
>>
> thanks, but I still seem to be missing something.
> I still can't get it to print out anything when I connect and send data to
> my server.
> I think something is wrong in my get_line/1 function.
>
> Here is my code so far.
>
> -module(linereceiver).
>
> -export([start/0]).
> -import(lists, [reverse/1]).
>
> sleep(T) ->
>     receive
>        after T ->
>            true
>     end.
>
> start() ->
>     spawn(fun() ->
>             start_parallel_server(3000),
>             sleep(infinity)
>           end).
>
> start_parallel_server(Port) ->
>     {ok, Listen} = gen_tcp:listen(Port, [binary, {packet,line},
>                                          {reuseaddr, true},
>                                          {active, true}]),
>     spawn(fun() -> par_connect(Listen)end).
>
> par_connect(Listen) ->
>     {ok, Socket} = gen_tcp:accept(Listen),
>     spawn(fun() -> par_connect(Listen) end),
>     inet:setopts(Socket, [{packet, line}, binary, {nodelay, true}, {active,
> true}]),
>     io:format("Connection Made!~n"),
>     get_line(Socket).
>
> get_line(Socket) ->
>     receive
>         {tcp, Socket, Bin} ->
>             io:format("Received Line:~p~n", binary_to_list(Bin)),
>             get_line(Socket);
>         {tcp_closed, Socket} ->
>             io:format("Connection Closed!~n")
>     end.
>
>
also I don't get any output when connections are closed / disconnected by
the client.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20090427/03b9af4a/attachment.htm>


More information about the erlang-questions mailing list