c - 检测 http header 的结尾\r\n\r\n

标签 c http

使用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/

相关文章:

Android:如何在下载前获取文件大小?

http - 如何通过Postman在go lang中处理GET操作(CRUD)?

c - 以下 C 代码有什么问题?

c - 有用的 GCcflags来提高程序的安全性?

c++ - 如何在c中查找同一字符串中该字符的第一次重复出现

c# - 以编程方式检查 Http 命名空间保留

无法获取字符串数组来复制一个随机值

c - 具有这种形式的链表/指针 list[0]

python - 在python中处理服务器端的HTTP GET输入参数

node.js - 在单独的进程中处理nodejs http请求