📄 as_http.h
字号:
#ifndef __AS_HTTP_H__
#define __AS_HTTP_H__
#define XLS 0x01
#define DOC 0x02
#define PPT 0x03
#define PDF 0x04
#define EXE 0x05
#define ZIP 0x06
#define RAR 0x07
#define RM 0x08
#define SWF 0x09
#define TXT 0x0a
#define AVI 0x0b
#define BMP 0x0c
#define JPG 0x0d
//////////////////////////////////////////////////////////////////////////
//过滤http报文头部,获得Content-Length
//////////////////////////////////////////////////////////////////////////
int DecodeHTTP(const u_char *datatcp, u_int lentcp, ULONG &clen, int &postion)
{
if(lentcp <= 0) {
return 0;
}
if(memcmp(datatcp, "HTTP", 4) != 0) return 0;
if(memcmp(datatcp+9, "200", 3) != 0) return 0;
char *str = new char[lentcp+1];
memcpy(str, datatcp, lentcp);
str[lentcp] = '\0';
char *pdest;
char seps[5] = {0x0d, 0x0a, 0x0d, 0x0a};
char *seps1 = "Content-Length";
pdest = strstr(str, seps1 );
if( pdest == NULL ) return 0;
else {
clen = atol(pdest+16);
}
pdest = strstr(str, seps );
if( pdest == NULL ) return 0;
else {
postion = (int)(pdest - str + 1) + 3;
}
delete []str;
return 1;
}
//////////////////////////////////////////////////////////////////////////
// 根据GET报文的URL字段判断要下载的文件类型
int get_ftype(const u_char *datatcp, u_int lentcp)
{
if(lentcp <= 0) {
return 0;
}
char seps1[3] = {0x0d, 0x0a};
char seps2[2] = {0x20};
char *token = NULL;
char *str = new char[lentcp+1];
memcpy(str, datatcp, lentcp);
str[lentcp] = '\0';
token = strtok( str, seps1);
token = strtok( str, seps2);
if(token != NULL) {
token = strtok( NULL, seps2);
int len = strlen(token)-4;
if (memcmp(token+len, ".exe", 4) == 0) {
return EXE;
}
if (memcmp(token+len, ".doc", 4) == 0) {
return DOC;
}
if (memcmp(token+len, ".xls", 4) == 0) {
return XLS;
}
if (memcmp(token+len, ".pdf", 4) == 0) {
return PDF;
}
if (memcmp(token+len, ".rar", 4) == 0) {
return RAR;
}
if (memcmp(token+len, ".zip", 4) == 0) {
return ZIP;
}
}
delete []str;
return 0;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -