Erlang gen_tcp正在累积接收到的数据
这是我用来接收数据的代码Erlang gen_tcp正在累积接收到的数据,erlang,gen-tcp,Erlang,Gen Tcp,这是我用来接收数据的代码 -module(t). -compile(export_all). start() -> {ok, LSock} = gen_tcp:listen(5555, [binary, {packet, 0}, {active, false}]), {ok, Sock} = gen_tcp:accept(LSock), {ok, Bin} = do_recv(Sock, []), ok = gen_tcp:close(Sock), Bin.
-module(t).
-compile(export_all).
start() ->
{ok, LSock} = gen_tcp:listen(5555, [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) ->
io:format("(="), io:format(Bs),io:format("=)~n"),
case gen_tcp:recv(Sock, 0) of
{ok, B} ->
do_recv(Sock, [Bs, B]);
{error, closed} ->
{ok, list_to_binary(Bs)}
end.
我将发送到系列中的套接字-1、2、3、4、5
代码是累积接收到的数据
这是打印到屏幕
(=12345=)
如何将代码修改为打印的代码
(=1=)
(=2=)
(=3=)
(=4=)
(=5=)
该数据不会累积TCP将数据表示为没有消息结构的流。这与它的Erlangs实现无关 如果您需要一个消息结构,您必须在数据流的频带中对其进行编码 Erlang帮助您使用一个简单的内置数据包结构,其长度为1、2或4字节,后跟数据。这是
{packet N}
对N等于1,2或4所做的
但您还需要发送符合此结构的数据