2

我对 UNIX 下的套接字编程很陌生。现在我对最佳长度感到困惑

比如说我想把15M的数据发给别人,我该怎么做呢?应该多大

我定义缓冲区?

4

2 回答 2

1

例如,我在 JETTY 的实现ServletInputStreamServletOutputStream. 所以你的缓冲区应该是这个的倍数。

这就是我们可以在套接字方面推荐的内容。您使用的实际缓冲区大小应尽可能大以最大程度地减少发送两个缓冲区之间的开销,并且应尽可能小以保持进程的占用空间小。

如果你想发送 15MB 而 15MB 对你的硬件来说并不多,那就创建一个 15MB 的缓冲区。

于 2013-09-12T15:37:49.000 回答
0

缓冲区大小很大程度上取决于您的应用程序。我假设这个缓冲区只是将数据传递给操作系统。

所以就像说的那样,如果你传递的缓冲区比数据包有效负载所能获得的更大,它可以被分成多个数据包,避免不必要的系统调用和应用程序和操作系统之间的数据传输。

另一方面,大于必要的缓冲区会消耗系统内存而不需要,并且根据操作系统、驱动程序和夸大的缓冲区大小,系统调用可能会出现问题。

因此,它会因应用程序和系统而异。也许您可以将其作为配置或不作为配置。

于 2013-09-12T16:16:36.260 回答