序列 0 1 2 3 4 5 6 7 ... 数值 01 06 00 01 01 1D 03 00...
序列 0 1 2 3 4 5 6 7 ... 数值 01 03 00 01 00 08 00 00...
typedef struct { unsigned char appStatusB3; unsigned char appStatusB2; unsigned char appStatusB1; unsigned char appStatusB0; unsigned char protocolStatus; unsigned char reserved[3]; } FCGI_EndRequestBody;
#define FCGI_REQUEST_COMPLETE 0 #define FCGI_CANT_MPX_CONN 1 #define FCGI_OVERLOADED 2 #define FCGI_UNKNOWN_ROLE 3
序列 0 1 2 3 4 5 6 7 数值 00 00 00 00 00 00 00 00
序列 0 1 2 3 4 5 6 7 ... 数值 01 01 00 01 00 08 00 00...
typedef struct { unsigned char roleB1; unsigned char roleB0; unsigned char flags; unsigned char reserved[5]; } FCGI_BeginRequestBody;
#role的可以取如下三个值 #define FCGI_RESPONDER 1 #define FCGI_AUTHORIZER 2 #define FCGI_FILTER 3
序列 0 1 2 3 4 5 6 7 数值 00 01 00 00 00 00 00 00
typedef struct { unsigned char nameLengthB0; /* nameLengthB0 >> 7 == 0 */ unsigned char valueLengthB3; /* valueLengthB3 >> 7 == 1 */ unsigned char valueLengthB2; unsigned char valueLengthB1; unsigned char valueLengthB0; unsigned char nameData[nameLength]; unsigned char valueData[valueLength ((B3 & 0x7f) << 24) + (B2 << 16) + (B1 << 8) + B0]; } FCGI_NameValuePair14;
序列 0 1 2 3 4 5 6 7 ... 数值 00 04 00 01 04 EB 05 00...
序列 0 1 2 3 4 5 6 7 ............ 数值 0F 80 00 00 91 S C R IPT_FILENAME/data/www/......
((B3 & 0x7f) << 24) + (B2 << 16) + (B1 << 8) + B0算算等于多少呢?如果对位移、与等操作符号不熟悉的话,更详细的介绍见之前的文章
typedef struct {
unsigned char version;
unsigned char type;
unsigned char requestIdB1;
unsigned char requestIdB0;
unsigned char contentLengthB1;
unsigned char contentLengthB0;
unsigned char paddingLength;
unsigned char reserved;
unsigned char contentData[contentLength];
unsigned char paddingData[paddingLength];
} FCGI_Record;
typedef struct { unsigned char version; unsigned char type; unsigned char requestIdB1; unsigned char requestIdB0; unsigned char contentLengthB1; unsigned char contentLengthB0; unsigned char paddingLength; unsigned char reserved; } FCGI_Header;
#version定义为1 #define FCGI_VERSION_1 1
#define FCGI_BEGIN_REQUEST 1 #define FCGI_ABORT_REQUEST 2 #define FCGI_END_REQUEST 3 #define FCGI_PARAMS 4 #define FCGI_STDIN 5 #define FCGI_STDOUT 6 #define FCGI_STDERR 7 #define FCGI_DATA 8 #define FCGI_GET_VALUES 9 #define FCGI_GET_VALUES_RESULT 10 #define FCGI_UNKNOWN_TYPE 11 #define FCGI_MAXTYPE (FCGI_UNKNOWN_TYPE)
01 05 00 01 00 00 00 00
01 04 00 01 00 00 00 00当然如果FCGI_PARAMS本身为空的话就无需再次附加了。
上一篇 熟悉或/与/位移操作符