使用recv我想获取http标头,以便我可以解析内容的长度。但是我在检测换行时遇到了麻烦。还是实际上我什至必须检测到换行符,或者我第一次读入缓冲区总是总是完整的标头(假设我有足够长的缓冲区)。
这是用C编写的。
编辑:看一些相关的问题,我担心的事情之一是“ ...的标题的\ r \ n”可能会被两次不同的recv()调用拉入缓冲区通过识别标头中断来实现您的代码。”
您应该重复调用recv(),并且每次给您x字节时,都按字节增加给它的缓冲区指针x(并按字节减少cb的x值)。您要执行此操作,直到缓冲区包含一个\r\n\r\n或完全满为止,在这种情况下,您只需要关闭套接字并忽略恶意客户端即可。缓冲区大小应为3000字节左右。
但是:这忽略了一般的问题,即您的服务器似乎是轮询服务器。如果您有经验,则应该尝试制作一个epoll服务器。