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

📄 reqsock.h

📁 一个网路服务器程序
💻 H
字号:
// ReqSock.h : interface of the CRequestSocket class
//
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.

class CRequest;
class CHttpSvrDoc;

class CRequestSocket : public CAsyncSocket
{
	DECLARE_DYNCREATE(CRequestSocket)
	CRequestSocket( void );

protected:
	void StuffFileType( void );
	BOOL m_bKeepOpen;
	BOOL m_bWantKeepOpen;
	enum REQSTATUS
	{
		REQ_REQUEST=0, REQ_HEADER, REQ_BODY, REQ_SIMPLE, REQ_DONE
	};

	CRequest*   m_pRequest; // request object

	CByteArray  m_buf;
	int         m_cbOut;
	CString     m_strLine;
	REQSTATUS   m_reqStatus;
	HANDLE      m_hFile;
	int         m_nRefs;
	BOOL        m_bKilled;

public:
	CHttpSvrDoc* m_pDoc;
	BOOL CheckExt( const CString& strExt, CString& strAvail, DWORD dwType );
	BOOL IsSvrApp( void );
	BOOL CheckDefault( UINT uList, BOOL bExecute );
	CString StripLast( CString& strPath );
	int StuffStatus( const CString& strStatus );
	CRequestSocket( CHttpSvrDoc* pDoc );
	~CRequestSocket( void );
	virtual int AddRef( void );
	virtual int Release( void );

#ifdef IMPL_CGI
	BOOL        CGIStart( void );
	void        CGIDone( void );
	CWinThread* m_pThread;
	CEvent*     m_pCancel;
#endif // IMPL_CGI

protected:
	BOOL StartSvrApp( void );
	BOOL FromHttpTime( const CString& strHttp, CTime& timeHttp );
	BOOL IfModSince( const CTime& timeIfMod );
	CString GetHttpDate( LPFILETIME pft = NULL );
	BOOL GetLine( const CByteArray& bytes, int nBytes, int& ndx );
	void ProcessLine( void );
	BOOL BodySent( void );
	void AddToBody( int nBytes, int ndx );
	BOOL StartResponse( void );
	BOOL FindTarget( CString& strFile );
	BOOL URLtoPath( CString& strFile );
	BOOL PathToURL( CString& strFile );
	BOOL StuffHeading( void );
	void StartTargetStuff( void );

	int StuffString( const CString& );
	int StuffString( UINT uId );
	int StuffStatus( UINT uMsg );
	int StuffError( UINT uMsg );
	int StuffHeader( CString strName, CString strValue );
	int StuffHeader( CString strName, int nValue );

	// methods not supported by Mac version....
	void StuffListing( void );
	int  StuffListingFile( WIN32_FIND_DATA* fd, const CString& strDir, BOOL bIcons );

protected:
	virtual void OnReceive(int nErrorCode);
	virtual void OnSend(int nErrorCode);
	virtual void OnClose(int nErrorCode);

	friend UINT CGIThread( LPVOID );
};

CString Decode( const CString& str, BOOL bQuery = FALSE );

#ifdef IMPL_CGI
void HeaderToEnvVar( CString& strVar );

class CEnvironment
{
public:
	CStringList m_list;
	int         m_nSize;

	CEnvironment( void );
	~CEnvironment( void );
	BOOL Add( CString name, CString value );
	LPVOID GetBlock( void );
};
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -