2

我正在创建一个 TCP 服务器。我听说你不能总是指望通过一次读取来读取所有数据,即使所有数据都是通过一次写入发送的。该协议可能会破坏它。我的问题是,仅用于大数据包还是会分解 1kb?500字节?任何尺寸都安全吗?

4

2 回答 2

2

您永远不能指望一次读取所有数据。您可以通过设置一个小的 MTU 来任意拆分包。

于 2013-03-19T19:34:54.510 回答
1

使用 TCP 套接字时,您无法控制发送的“数据包”。您只需向/从套接字写入/读取字节,协议控制它的传输方式和时间。

对方在任何时候愿意接收的数据量实际上都有一个最大值。这称为“最大段大小”。你无法知道它有多大,因为它是由你正在与之交谈的人决定的。它们可能只允许您以最多 1k 段或仅 500 字节段发送数据。没有办法知道,除非你可以控制两端。

此外,您写出的字节不仅可以分成更小的段,而且实际上可以将多个小的写入组合成一个更大的段。请参阅Nagle 算法

于 2013-03-19T19:43:01.580 回答