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

📄 mysock.h

📁 这是网络实用编程的随书的源代码,欢迎下载
💻 H
字号:
#if !defined(AFX_MYSOCK_H__0444E4E0_0C28_11DA_BB87_AF2B44E1925E__INCLUDED_)
#define AFX_MYSOCK_H__0444E4E0_0C28_11DA_BB87_AF2B44E1925E__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// mySock.h : header file
//
#include <vector>
#include <strstream>
#include <string>

using namespace std;

class  CPop3Dlg;

/////////////////////////////////////////////////////////////////////////////
// mySock command target

//显示不同信息的标志
#define S_CLOSE   1  //当关闭连接时,显示关闭信息
#define S_CONNECT 2  //当连接成功时,显示连接信息
#define S_RECEIVE 3  //当收到服务器发来的信息时,显示该信息
#define S_GETNUM  4 //当所有信件下载完毕后,显示信箱中的信件总数
#define S_GETSIZE 5 //当所有信件下载完毕后,显示信箱中的信件总大小
#define S_ENDRETR 6 //当所有信件下载完毕后,显示相关信息

//描述pop3会话状态的枚举类型
typedef enum {FIRST=0,USER,PASS,STAT,LIST,RETR,ENDRETR,DELE,GOON} STATE;

//用来缓存一封信件信息的结构
typedef struct 
{
	CString text;  //存储信件的文本
	int msgSize;   //信件的大小
	int	retrSize;  //信件实际下载的大小,在下载过程中动态变化
} MESSAGEPROP;

//自己的套接字类
class mySock : public CAsyncSocket
{
// Attributes
public:
	CString lastMsg;
	CString error;
	int numMsg, sizeMsg, retrMsg;
	vector<MESSAGEPROP> msgs; //盛放信件信息的向量

// Operations
public:
	//获得基本的邮件信头字段: From, To, Date, Subject, Body
	CString GetMsgStuff(int i); 
	CString GetMsgBody(int i);     //获得信件体
	CString GetMsgSubject(int i);  //获得信件标题
	CString GetMsg(int i);         //获得整封信的内容
	CString ReadLn(int index,CString src);

	void Close();            //退出服务器
	void SetParent(CPop3Dlg *  pDlg);
	mySock();
	virtual ~mySock();

// Overrides
public:
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(mySock)
	public:
	virtual void OnConnect(int nErrorCode);
	virtual void OnClose(int nErrorCode);
	virtual void OnReceive(int nErrorCode);
	//}}AFX_VIRTUAL

	// Generated message map functions
	//{{AFX_MSG(mySock)
		// NOTE - the ClassWizard will add and remove member functions here.
	//}}AFX_MSG

// Implementation
protected:
private:
	void AnalyzeMsg();
	CPop3Dlg* m_pDlg;
	STATE state;
	int delMsg;
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_MYSOCK_H__0444E4E0_0C28_11DA_BB87_AF2B44E1925E__INCLUDED_)

⌨️ 快捷键说明

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