【发布时间】:2014-03-18 08:50:45
【问题描述】:
让我们假设有一个为典型的服务器-客户端程序创建的 Unix 域套接字。客户端通过套接字发送一个 10GB 的缓冲区,同时被服务器消耗。
操作系统(Linux/BSD)是否将 10GB 缓冲区拆分为多个数据包并发送/使用它们,还是一次性发送?
如果不能一次性发送10GB的domain socket缓冲区,那么单个数据包的实际大小限制是多少?
约束:
- 该程序将在 Linux 2.6.32+ 和 FreeBSD 9+ 上运行
- 要发送的缓冲区大小范围从 3 字节到最大 10GB。
【问题讨论】:
-
客户端一次性发送 10GB 缓冲区没有什么“典型”。通常,它会将一些源读入以 KB 而非 GB 为单位的缓冲区,然后逐块发送。
-
@EJP 你知道我需要分解多少 10GB 缓冲区吗?每 1GB/1MB?
-
霍华德,你的插座是什么类型的?它是如何创建的以及如何发送|接收数据?
标签: linux sockets unix posix ipc