简单的问题......
此代码..
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).
非常清楚,除了我不太明白[binary,{packet,0}]是什么意思? 有人在乎解释吗?
MadSeb
答案 0 :(得分:10)
根据gen_tcp:connect文档:
[binary, {packet, 0}]
是传递给connect函数的选项列表。binary
表示在套接字上发送/接收的数据是二进制格式(而不是列表格式。{packet, 0}
,有点令人困惑,文档中似乎没有涉及。在与Freenode上的#erlang中的一些知识渊博的人交谈后,我发现packet
选项指定了多少字节表示数据包长度。在幕后,长度从数据包中删除,而erlang只是向您发送没有长度的数据包。因此{packet, 0}
与没有长度的原始数据包相同,并且处理所有内容但是数据的接收者。有关详细信息,请查看inet:setopts。希望有所帮助。
答案 1 :(得分:0)
{packet,0}用于指示TCP数据以未修改的形式直接传递给应用程序。
二进制表示接收的数据包以二进制形式传送。 (但你仍然可以使用gen_tcp:发送消息,如“消息”)