【发布时间】:2021-07-16 14:14:23
【问题描述】:
我的问题主要是教育性的,所以请不要告诉我你不应该那样做,或者你应该那样做。谢谢。
这基本上是关于 TCP 的工作原理。
我正在用 C 语言实现一个 HTTP 客户端,它基本上只是发送一个 HTTP GET 并从服务器读取响应。现在我想将标题与正文分开。问题是,是否可以从套接字逐字节读取:
while(recv(sockfd, buffer, 1, 0))
{
// do whatever with buffer[0]
}
或者是这样的:一旦服务器写入套接字,比如 1000 个字节,所以一旦客户端读取甚至 1 个字节,那么所有这些消息都“浪费”并且无法再读取?
因为我记得在过去某个时候处理套接字时,我是这样理解它正在工作的。
【问题讨论】:
-
你可以为 TCP 做到这一点。数据的边界被保留,不适合接收者缓冲区的数据将被丢弃在 UDP 中。
-
你可以这样做。而且您可以在几分钟内对其进行测试。