2009-11-24 39 views
3

使用以下代码发送。该调用gen_tcp:发送调用返回{错误,EINVAL}但我想不通为什么...通过TCP发送Erlang中的二进制文件

-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. 

回答

13

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

% ... 
OK = gen_tcp:send(My_Socket, B_Message), 
% ...