【发布时间】:2015-06-11 10:39:05
【问题描述】:
所以我正在阅读以试图找到有关套接字的更多信息,但我发现文档类型在重复,而没有进一步详细说明套接字发送数据的方式:
那么{packet, N} 在选项中指定这个时(打开套接字时)会做什么?它是在数据之前包含 N 个字节的标头还是将消息分成 N 个数据包?或者它是否在消息最终被分解的所有数据包中都包含 N 的标头?
我正在阅读 Joe Armstrong 的《并发世界的软件》,我发现了这一段:
“数据包”一词是指应用程序请求或响应消息的长度,而不是在线路上看到的物理数据包。
我无法理解这句话的含义。 packet seen on the wire 是什么意思。
我尝试查看文档,但发现很少提及该选项的作用。我发现的简短解释是它在消息前加上 N 标头,但是我还在作为示例编写的代码中找到了此注释:
%% Usually, it's a good idea to give up in case of a
%% send timeout, as you never know how much actually
%% reached the server, maybe only a packet header?!
因此,消息被分成几部分(我猜是一个随机数?),并且每一个都带有一个 N 字节的标头。
我的问题是{header, N} 选项如何影响数据的发送方式。
【问题讨论】: