我编写了一个非常简单的程序,从 FastCGI 服务器读取信息。它所做的一切都是接受文件描述符为 0 的套接字,并将它从服务器接收到的所有数据“吐”到raw.binary (1KB)中。我收到了 926 个字节,但文件长度为 1014,因为缓冲区有那个大小。
我尝试使用此FastCGI 规范手动分析数据,但数据似乎与该规范告诉我的不匹配。
前 2 个字节都等于 1。很好,这意味着协议版本 1,类型 1。(代表请求的开始。)
接下来的 2 个字节组成一个包含 1 的 int16。这也符合预期,因为这是请求 ID,而 1 是第一个请求。
然而,接下来的 2 个字节(十六进制)00 08
告诉我内容长度是 8...虽然这是不可能的,有很多内容甚至不在这个 8 值的范围内,如果您下载了二进制文件,您可以看到胡言乱语。
我究竟做错了什么?