Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sending binaries in Erlang over TCP

Tags:

tcp

erlang

Using the code below to send. The gen_tcp:send call returns {error,einval} but I can't figure out why...

-define(TCP_OPTIONS,[binary, {active, false}, {reuseaddr, true}]).

client() ->
  case gen_tcp:connect(to_Server(), 8080, ?TCP_OPTIONS) of
    {error, Reason} ->
      io:format("~p~n",[Reason]);
    {ok,My_Socket} ->
      Message = {"stuff", hello, "data"},
      B_Message = term_to_binary(Message),
      OK = gen_tcp:send(My_Socket, {message,B_Message}),  % error here
      OK = gen_tcp:close(My_Socket)
end.
like image 311
Nolan Avatar asked Nov 24 '09 22:11

Nolan


1 Answers

You're trying to send {message,B_Message}, which is a tuple, but gen_tcp:send only accepts a list of characters or a binary as its second argument. You probably wanted:

% ...
OK = gen_tcp:send(My_Socket, B_Message),
% ...
like image 81
Jan Krüger Avatar answered Oct 05 '22 08:10

Jan Krüger