这是我接收数据的代码
-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=)
没有累积数据
答案 0 :(得分:2)
TCP将数据表示为没有消息结构的流。这与Erlangs的实现没有任何关系。
如果需要消息结构,则必须在数据流中对其进行编码。
Erlang可以帮助您使用简单的内置数据包结构,其长度为1,2或4字节,后跟数据。这是{packet N}
对N等于1,2或4
但您还需要发送符合此结构的数据。