考虑通过套接字发送 100 个字节。对于 TCP 套接字,如果我recv()以 50 的长度调用,我得到前 50 个字节,如果我再次调用它,我得到第二个 50 个字节。对于 UDP 套接字,如果我recvfrom()以 50 的长度进行调用,我将获得前 50 个字节,但无法检索第二个 50 — 后续调用会recvfrom()阻塞,直到收到下一个数据报。
这是否意味着,如果我想接收整个 UDP 数据报,无论大小,我都必须分配一个 64k 缓冲区(UDP 允许的最大值)?如果connect()我使用 UDP 套接字,这会改变行为吗?或者在 UDP 上运行的协议是否通常需要一个已知的最大数据包大小,应该用于缓冲区?
| 归档时间: |
|
| 查看次数: |
2955 次 |
| 最近记录: |