使用recv我想获取http header ,以便我可以解析内容长度。但是我无法检测到换行符。或者实际上我是否必须检测换行符,或者我第一次读入缓冲区时总是完整的 header (假设我有足够长的缓冲区)。
这是用 C 语言编写的。
编辑:查看一些相关问题,我担心的一件事是 “... header 中断的“\r\n”可能会通过两次不同的recv()调用拉入缓冲区,这将阻止您的代码识别 header 中断。”
最佳答案
您应该重复调用recv(),每次它给您x
个字节时,您就将给它的缓冲区指针增加x
个字节(并减少cb也允许写入 x
字节)。执行此操作,直到缓冲区包含 \r\n\r\n
或完全满,在这种情况下,您只需关闭套接字并从此忽略恶意客户端。缓冲区大小应约为 3000 字节。
但是:这忽略了您的服务器似乎是轮询服务器的普遍问题。如果您有一些经验,您应该尝试制作一个 epoll-server。
关于c - 检测 http header 的结尾\r\n\r\n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14926062/