zhangshaoxiao

Results 1 comments of zhangshaoxiao

正在学习,代码刚看了一部分。回答下你的问题2. 关于粘包问题:TCP协议确实会存在粘包问题:在某个数据到达的时刻,缓冲区主要有以下几种状态: 1.缓冲区为第一个包的不完全包 2.缓冲区为第一个包的全包和后一个包的不完全包 3.在某一个时刻,缓冲区为某个包的不完全包,后续跟着若干个(>=0)全包,而后又跟着一个不完全包 4.so on 解决方法: HTTP的请求包含3个部分:请求行,包头,包体,其中请求行以\r\n结束,包头以\r\n\r\n结束, 1.使用状态机读取缓冲区,若读到完整请求行+包头,则解析之,并读取其中的包体长度,根据包体长度读取包体,处理完后将处理过的字符串从缓冲区清掉。然后返回步骤1 2.若读不到完整包,则返回again,下次缓冲区有数据到达时从步骤1重新开始 3.若一次到达多个包,按照1的模式处理多个包,将剩下的最后一个不完全包留在缓冲区,等着和剩下的内容进行拼接。下次数据到达时重新返回步骤1 需要注意:为了防止恶意攻击,缓冲区应该有最大长度,超出时需要关闭!