simple erlang network programming

[ permalink ] [ download ]
-module (ejemplotcp).
-export ([main/0, servidor/0, cliente /0]).

cliente() ->
    SomeHostInNet = "localhost", % to make it runnable on one machine
    {ok, Sock} = gen_tcp:connect(SomeHostInNet, 5678,
				 [binary, {packet, 0}]),
    ok = gen_tcp:send(Sock, "Some Data"),
    ok = gen_tcp:close(Sock).

%At the other end a server is listening on port 5678, accepts the connection and receives the binary:

servidor() ->
    {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),
    Bin.

do_recv(Sock, Bs) ->
    case gen_tcp:recv(Sock, 0) of
	{ok, B} ->
	    do_recv(Sock, [Bs, B]);
	{error, closed} ->
	    {ok, list_to_binary(Bs)}
    end.


main ()->
    spawn(ejemplotcp, servidor, []),
    spawn(ejemplotcp, cliente, []).
hits counter