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.希望有所帮助.