📄 httphead.cpp
字号:
#include "httphead.h"
#include <assert.h>
#include <iostream>
using namespace std;
CHttphead::CHttphead(void)
{
}
CHttphead::~CHttphead(void)
{
}
// http 头
CHttphead::CHttphead(char* buf, int buffsize)
{
cout<<"httphead"<<buf<<endl;
assert(buf!=NULL&&buffsize>=0);
//保存到变量中
m_pbuff=new char [buffsize+1];
strcpy(m_pbuff,buf);
m_ibuffsize=buffsize;
separteElement();
}
// 设置http头
void CHttphead::sethttphead(char* buff, int size)
{
assert(buff!=NULL&&size>=0);
if(m_pbuff!=NULL)
delete m_pbuff;
m_pbuff=new char [size+1];
m_ibuffsize=size;
separteElement();
}
// 分离各个变量
void CHttphead::separteElement(void)
{
if(m_pbuff==NULL)
return;
int rownum=0; //行号
string strrow;
strrow.clear();
string firstrow;
for (int x=0;x<m_ibuffsize;x++)
{
strrow+=m_pbuff[x];
if (m_pbuff[x]==0x0d)
{
//回车 enter CR,next char is LF
x++;
if(rownum==0)
{
firstrow=strrow;
}//end if
rownum++;
/* if(strrow.empty())
{
return ;
//空行,表示下面的都是用户数据
//清空
if(m_requestdata!=NULL)
delete m_requestdata;
//申请空间保存请求数据
m_requestdata=new char[m_ibuffsize-x+1];
for (int r=0;x<m_ibuffsize;x++)
{
m_requestdata[r]=m_ibuffsize[x];
r++;
}
m_irdsize=m_ibuffsize-x;
}*/
strrow.clear();
}//end a line
}//end for (整个数据包头分析完毕)
int temp=firstrow.size();
char *ver=new char [temp];
char *cmd=new char [temp];
char *path=new char[temp];
sscanf(firstrow.data(),"%s %s %s",cmd,path,ver);
m_strver=ver;
m_strcmd=cmd;
m_strurl=path;
}
char * CHttphead::getRequestData(void)
{
return m_requestdata;
}
int CHttphead::getRequestDataSize(void)
{
return m_irdsize;
}
string CHttphead::getcmd(void)
{
return m_strcmd;
}
string CHttphead::getVER(void)
{
return m_strver;
}
string CHttphead::geturl(void)
{
return m_strurl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -