【发布时间】:2012-08-21 19:08:28
【问题描述】:
我有以下代码使用 gen_tcp 套接字,它应该使用 {active, true} 接收一些总是大小为 5 的二进制命令(例如 Command = <<"hello">>)
{ok, ListenSocket} = gen_tcp:listen(5555, [{active, true}, {mode, binary},
{packet, 0}]),
{ok, Socket} = gen_tcp:accept(ListenSocket),
loop().
receive() ->
{tcp, _Socket, Message:4/binary} ->
io:format("Success~n", []),
loop();
{tcp, _Socket, Other} ->
io:format("Received: ~p~n", [Other]),
loop()
end.
但如果我尝试像这样作为客户端连接:
1> {ok, S} = gen_tcp:connect("localhost", 5555, []).
{ok,#Port<0.582>}
2> gen_tcp:send(S, <<"hello">>).
ok
我在接收部分:
Received: {tcp,#Port<0.585>,<<"hello">>}
所以我想我的错误是在模式匹配中......但是在哪里?
【问题讨论】:
-
您在发送
<<"hello">>时收到<<"ciao">>吗? -
操作,不...现在将在问题中解决它