从套接字缓冲数据?

Frx*_*rem 4 c sockets buffer

我正在尝试制作一个简单的HTTP服务器,该服务器能够解析客户端请求并将响应发送回去。

现在我有一个问题。我必须在请求中一次阅读和处理一行,而且我不知道是否应该:

  • 一次读取一个字节,或
  • 一次读取N个字节的块,将它们放在缓冲区中,然后在读取新的字节块之前逐个处理字节。

最佳选择是什么,为什么

此外,是否有其他替代解决方案?就像一个函数可以一次从套接字读取某条线之类的函数一样?

Duc*_*uck 5

一次单个字节将破坏性能。考虑一个大小合适的圆形缓冲区。

读取缓冲区中任意大小的块。大多数时候,您会获得短读。在读取的字节中检查http命令的结尾。处理完整的命令,下一个字节成为缓冲区的头。如果缓冲区已满,请将其复制到备份缓冲区,使用第二个循环缓冲区,报告错误或适当的操作。