www.pudn.com > NETINFO.rar > http.h


#ifndef _HTTP_H_ 
#define _HTTP_H_ 
 
#include "connect.h" 
#include "CollectLine.h" 
 
 
#define HTTP_HEADER_LINE_BUFFER_SIZE 16384 
#define MAX_HTTP_HEADER_LINE 8192 
#define	MAX_URL_LENGTH 8192 
#define MAX_HOST_LENGTH 256 
#define MAX_HTTP_ITEM_LENGTH 256 
 
struct HTTP_HEADER_INFO 
{ 
	char method[MAX_HTTP_ITEM_LENGTH]; 
	char url[MAX_URL_LENGTH]; 
	char content_Location[MAX_URL_LENGTH]; 
	char location[MAX_URL_LENGTH]; 
	char http_Version[MAX_HTTP_ITEM_LENGTH]; 
	char status_Code[MAX_HTTP_ITEM_LENGTH]; 
	char host[MAX_HOST_LENGTH]; 
	char connection[MAX_HTTP_ITEM_LENGTH]; 
	char content_Encoding[MAX_HTTP_ITEM_LENGTH]; 
	char content_Length[MAX_HTTP_ITEM_LENGTH]; 
	char content_MainType[MAX_HTTP_ITEM_LENGTH]; 
	char content_SubType[MAX_HTTP_ITEM_LENGTH]; 
	char content_Range[MAX_HTTP_ITEM_LENGTH]; 
	char referer[MAX_URL_LENGTH]; 
	char transfer_Encoding[MAX_HTTP_ITEM_LENGTH]; 
}; 
 
enum HTTP_ANALYSE_HEADER_TYPE 
{ 
	HEADER_TYPE_REQUEST_LINE,  
	HEADER_TYPE_STATUS_LINE,  
	HEADER_TYPE_NORMAL_HEADER 
}; 
 
//status means the coming data belongs to what kind of data 
enum HTTP_STATUS  
{ 
	HTTP_REQUEST_LINE,  
	HTTP_REQUEST_HEADER,  
	HTTP_REQUEST_BODY, 				 
	HTTP_STATUS_LINE,  
	HTTP_RESPONSE_HEADER,  
	HTTP_RESPONSE_BODY 
}; 
 
BOOL GetHostFromUrl(const char url[], char host[MAX_HOST_LENGTH]); 
 
class CHttpConnection:public CConnection 
{ 
public: 
	CHttpConnection(const ETHERNET *ether, const IP*ip, NetInfo* pNi, const NETINFO_CALLBACKS *pFuncs, DWORD dwAttachData); 
	virtual ~CHttpConnection(); 
	virtual BOOL OnData(int sender, int receiver, const BYTE* pData, DWORD length); 
	virtual enum CONNECT_TYPE GetConnectType(){return HTTP_CONNECT;}; 
public: 
	enum HTTP_STATUS m_status; 
	HTTP_HEADER_INFO m_request; 
	HTTP_HEADER_INFO m_response; 
	char m_szLastLine[MAX_HTTP_HEADER_LINE]; 
	CCollectLine m_lineBuf; 
}; 
 
typedef CHttpConnection* HHTTPCONNECT; 
void GetHttpHeader(HHTTPCONNECT hHttpConnect, const HTTP_HEADER_INFO **ppRequest, const HTTP_HEADER_INFO **ppResponse); 
 
#endif