Erlang gen_tcp连接问题

Mad*_*Seb 5 sockets erlang tcp

简单问题......

这段代码..

client() ->
    SomeHostInNet = "localhost" % to make it runnable on one machine
    {ok, Sock} = gen_tcp:connect(SomeHostInNet, 5678, 
                                 [binary, {packet, 0}]),
    ok = gen_tcp:send(Sock, "Some Data"),
    ok = gen_tcp:close(Sock).
Run Code Online (Sandbox Code Playgroud)

非常清楚,除了我不太明白[binary,{packet,0}]是什么意思?有人在乎解释吗?

MadSeb

OJ.*_*OJ. 10

根据gen_tcp:connect文档:

  • [binary, {packet, 0}] 是传递给connect函数的选项列表.
  • binary 表示在套接字上发送/接收的数据是二进制格式(而不是列表格式).
  • {packet, 0},有点令人困惑,它似乎没有在文档中涵盖.在与Freenode上的#erlang中的一些知识渊博的人交谈之后,我发现该packet选项指定了多少字节表示数据包长度.在幕后,长度从数据包中删除,而erlang只是向您发送没有长度的数据包.因此{packet, 0},与没有长度的原始数据包相同,并且处理所有内容但是数据的接收者.有关这方面的更多信息,请查看inet:setopts.

希望有所帮助.