⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httphead.cpp

📁 在linux下实现web服务!采用多进程并发服务(不是多线程的方式实现)
💻 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 + -