我构建了 UDP 服务器或 TCP 服务器,它们使用recv()
或recvfrom
接收来自客户端的数据包
但在我看来,机制是:内核从网络接收数据包并将IP / TCP / UDP标头条带化,然后将数据有效负载部分放入内核缓冲区,然后recv()
或recvfrom()
从内核缓冲区读取数据
所以这意味着缓冲区中只有字节,并且字节没有被分成部分,每个部分对应一个UDP数据报/TCP段的有效负载
如果我希望每次调用recv()
或recvfrom()
只接收一个 TCP 段或 UDP 数据报(注意,一个 TCP 或 UDP 数据包可能由于 IP 分片而包含多个 IP 数据包)
有可能吗?
如果是这样,如何?谢谢!