通过TCP在Erlang中发送二进制文件

Nol*_*lan 4 erlang tcp

使用下面的代码发送.gen_tcp:send调用返回{error,einval},但我无法弄清楚为什么......

-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.
Run Code Online (Sandbox Code Playgroud)

Jan*_*ger 14

您正在尝试发送{message,B_Message},这是一个元组,但gen_tcp:send只接受字符列表或二进制作为其第二个参数.你可能想要:

% ...
OK = gen_tcp:send(My_Socket, B_Message),
% ...
Run Code Online (Sandbox Code Playgroud)