这是参考我之前已经回答的问题:
我的协议实际上在发送任何其他数据之前发送了它最初发送的数据量。但是昨天,当我使用浏览器测试我的这段代码时,我有一个问题:
很多人建议我检查消息长度,但以浏览器为例。浏览器的 HTTP 请求在第一次发送到服务器时没有大小。现在,假设我使用了一个 256 字节的缓冲区,如果我在每个多路复用操作之间不断接收部分标头,我应该如何管理此客户端的数据结构?继续使用 realloc,因为我不断获取更多数据,然后当我遇到终止序列('\r\n')时,假设已收到所有数据?
我的意思是,有这样的东西:
typedef struct {
int fd;
char *data;
} CLIENT;
然后继续对数据使用 realloc?有人告诉我分配最大协议头的缓冲区大小,但这是唯一的方法吗?