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

📄 pop3.h

📁 Visual C++网络通信编程实用案例精逊配套源码 光盘中存放的是书中涉及的所有实例的源代码和经过编译后的应用程序。所有程序均经过测试
💻 H
字号:
// Pop3.h: interface for the CPop3 class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_POP3_H__C7D744E6_CB2C_44AC_9E1D_71D0D9F1D1CC__INCLUDED_)
#define AFX_POP3_H__C7D744E6_CB2C_44AC_9E1D_71D0D9F1D1CC__INCLUDED_

#include "Pop3Socket.h"	// Added by ClassView
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CPop3  
{
public:
	BOOL Reset(void);
	// 获得邮件主题
	LPCTSTR GetMailHeader(UINT nIndex);
	// 发送NOOP命令,进行一次空操作
	BOOL Noop(void);
	// 获得出错信息
	LPCTSTR GetErrorString(void);
	// 发送STAT命令,获得邮件总体的状态信息
	BOOL GetState(void);
	// 发送LIST命令,获得邮件的具体状态信息
	BOOL List(void);
	// 发送RETR命令,接收邮件正文
	BOOL RetrieveMail(UINT nIndex,CString &strMsg);
	// 发送DELE命令,将所选邮件标记为删除
	BOOL Delete(UINT nIndex);
	// 发送TOP命令,获得所有的邮件主题
	BOOL ListHeader(void);
	// 私有变量接口函数,返回给定索引的邮件大小
	DWORD GetMsgSize(UINT nID);
	// 私有变量接口函数,返回邮件数目
	UINT GetMailCount(void) const;
	// 发送命令
	BOOL Send(LPCTSTR lpszSend,UINT nLength);
	// 断开连接,发送QUIT命令,并请求真正删除所要求的邮件
	BOOL Disconnect(void);
	// 建立与服务器的连接,其中包括登录的过程
	BOOL Connect(LPCTSTR strAddress,LPCTSTR strUser,LPCTSTR strPassword,UINT nPort = 110);
	CPop3();
	virtual ~CPop3();

protected:
	// 所有邮件的总体大小
	UINT m_nSize;
	// 通信的套接字
	SOCKET m_sock;
	// 邮件数目,以GetMailCount为接口函数
	UINT m_nMails;
	// 记录是否发送过有效的LIST命令
	BOOL m_bList;
	// 记录是否发送过有效的STAT命令
	BOOL m_bState;
	// 记录每个邮件大小的MFC数组变量
	CDWordArray m_arSizes;
	// 记录每个邮件主题的MFC数组变量
	CStringArray m_arHeaders;
	// 记录是否已经与服务器建立连接
	BOOL m_bConnected;
	// 记录回应的消息
	CString m_sResponse;
	// 确定是否超时,只要用去的时间超过该值就表示超时
	// 应该采取相应措施
	DWORD m_dwTimeout;

private:
	// 记录出错信息,以GetErrorString为接口函数
	CString m_sError;
	// 去除开头的+OK标识,获得回应的有效信息
	// 从返回的信息中提取数目和大小信息,主要用于LIST命令的回应信息
	BOOL ParseNumAndSize(UINT &nNum,UINT &nSize,LPCTSTR lpszBuf,UINT &nEnd);
	// 读取回应信息,与GetResponse函数不同,它进行实际的工作
	BOOL ReadResponse(TCHAR *pChar,UINT nSize,BOOL bDouble);
	BOOL GetResponse(void);
	// 读取针对LIST命令的返回信息
	// 由于对LIST命令的返回信息较特殊,所以用单独的函数
	BOOL ReadList(void);
	// 对STAT命令的返回信息,原因同上
	BOOL ReadState(void);
};

#endif // !defined(AFX_POP3_H__C7D744E6_CB2C_44AC_9E1D_71D0D9F1D1CC__INCLUDED_)

⌨️ 快捷键说明

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