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

📄 clientsocket.h

📁 vc++6.0开发网络典型应用实例导航 1. 本光盘提供了本书中所有的实例源程序文件。 2. 附录文件夹下是Winsock 函数参考以及错误码列表
💻 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 + -