📄 clientsocket.h
字号:
// ClientSocket.h : header file
#if !defined(AFX_CLIENTSOCKET_H__B7C54BD3_A555_11D0_8996_00AA00B92B2E__INCLUDED_)
#define AFX_CLIENTSOCKET_H__B7C54BD3_A555_11D0_8996_00AA00B92B2E__INCLUDED_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#include "AspParser.h"
class CDataSocket;
class CClientThread;
enum
{
STATUS_REQUEST = 0,
STATUS_HEADER = 1,
STATUS_BODY = 2,
STATUS_SIMPLE = 3,
STATUS_DONE = 4,
};
static struct CMIMEType
{
LPCTSTR lpszExtension;
LPCTSTR lpszType;
}
m_MIMETypes[] =
{
{ ".gif" , "image/gif" },
{ ".jpg" , "image/jpg" },
{ ".png", "image/png" },
{ ".htm" , "text/html" },
{ ".html", "text/html" },
{ ".js", "text/html" },
{ ".txt", "text/plain" },
{ ".pdf", "application/pdf" },
{ ".avi", "video/avi" },
{ ".css", "text/css" },
{ ".swf", "application/futuresplash" },
{ ".xls", "application/vnd.ms-excel" },
{ ".doc", "application/vnd.ms-word" },
{ ".mid", "audio/midi" },
{ ".mp3", "audio/mpeg" },
{ ".rm", "application/vnd.rn-realmedia" },
{ ".wav", "audio/wav" },
{ ".zip", "application/x-tar" }
};
static const int m_nMIMELength = sizeof(m_MIMETypes) / sizeof(struct CMIMEType);
class CClientSocket : public CSocket
{
friend CClientThread;
// Attributes
public:
// Operations
public:
CClientSocket();
virtual ~CClientSocket();
// Pointers to members in CServerDlg
CCriticalSection* m_pCriticalSection;
CString m_strHomeDir;
CString m_strCurrentDir;
// Overrides
public:
CString m_strDefaultPage;
CWinThread* m_pThread;
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CClientSocket)
public:
virtual void OnClose(int nErrorCode);
virtual void OnReceive(int nErrorCode);
//}}AFX_VIRTUAL
// Generated message map functions
//{{AFX_MSG(CClientSocket)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG
// Implementation
protected:
void InitializeServerVariables();
int m_nRequestMethod;
BOOL ExecuteAspPage(LPCTSTR lpszFileName);
void RenderHeaders(CString& strHeaders);
BOOL GetServerVariable(LPTSTR lpszVariable, CString &strValue);
int m_nStatus;
BOOL GetLocalPath(LPCTSTR lpszRelativePath, CString &strLocalPath, BOOL &bIsDirectory);
BOOL SendData(LPCTSTR lpszData);
BOOL SendListing(LPCTSTR lpszDirectory);
BOOL SendHeader(LPCTSTR lpszFilename);
BOOL SendError(LPCTSTR lpszMessage);
BOOL SendFile(LPCTSTR lpszFileName);
// receive buffer
CString m_RxBuffer;
CStringList m_strLines;
CSimpleMap<CString, CString> m_Headers;
CString m_QueryParams;
CString m_FormVars;
void GetRequests();
void ProcessRequests();
CAspParser m_AspParser;
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_CLIENTSOCKET_H__B7C54BD3_A555_11D0_8996_00AA00B92B2E__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -