我以这种方式与客户建立了连接:
gen_tcp:listen(1234,[binary,{packet,0},{reuseaddr,true},{active,false},{recbuf,2048}]).
此代码执行消息处理:
loop(Socket)->
inet:setops(Socket,[{active,once}],
receive
{tcp,Socket,Data}->
handle(Data),
loop(Socket);
{Pid,Cmd}->
gen_tcp:send(Socket,Cmd),
loop(Socket);
{tcp_close,Socket}->
% ...
end.
我的操作系统是 Windows。当消息的大小为 1024 字节时,我会丢失Data
. 服务器向客户端发送 ACK + FIN。
我相信 Erlang 限制为 1024 字节,因此我定义了recbuf
.
问题出在哪里:Erlang、Windows、硬件?
谢谢。