没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
9.6 接收电子邮件的程序实例
9.6.1 实例程序的目的和实现的技术要点
通过这个实例,读者可以进一步了解 的有关原理和内容。程序的用户界面如图
所示:
图 电子邮件接收程序的用户界面
这个实例不太复杂,用户可以利用某个网站的 电子邮件接收服务器来接收你在
该网站的电子邮箱里的信件。首先填入 服务器地址、邮箱用户名和口令,并决定是
否要删除邮箱里的邮件;然后点击“连接”按钮,程序会与服务器建立 连接,然后发送
用户名和口令,经过验证,进入 会话。通过命令交互,将邮箱中的所有邮件取回。
在此过程中,左下方的多文本列表框()会显示全部的会话信息。信件全部
下载完毕后,左上方的组合列表框中就有了所有信件的标题字段。用户可以从中选择一封
信件,查看或者存储。然后可以断开连接。
实例只介绍了接收邮件,提取信头标题字段的有关内容,能正确显示符合 规
范的邮件。由于目前邮件结构非常复杂,限于篇幅,程序没有对收到的信件作进一步的分
析,也没有对编码的信息进行译码,读者看到的是收信的原始信息,有兴趣的读者可以进
一步扩展程序的功能,例如,对信件进行 格式分析,将附件提取出来。
程序实现的技术要点是:
.运用 的消息驱动机制
除了由 创建的应用程序类和对话框类以外,程序从 !"#$ 类派生了自
己的套接字类,并为它添加了 %&、'%&和 (%&三个事件处理
函数。程序的会话过程几乎完全是由 )*!) 消息驱动的。建立连接后,服务器会返回
信息,接到命令后,服务器也会返回信息。当信息到达客户端套接字的接收缓冲区时,会
触发 )*!) 消息,并自动执行 (%&函数。该函数接收服务器发来的信息,进
行分析处理,然后再发送相应的命令。这命令又会引来服务器的响应,又会触发客户端的
)*!) 消息。如此周而复始,完成 会话的全过程。
.通过状态转换来控制会话命令的发布顺序
程序定义了一个枚举类型 #!,并为套接字类定义了一个 #! 类型的变量
+,用来表示 会话的实际状态。容易看出,枚举的成员符号是客户端向 服
务器发送的命令。
",-
. #/012#1!##1#!13#114)1)31546#!7
#!+7
当用户点击“连接”按钮与服务器建立 连接时,将 + 置为初值 #;然后,
每当收到服务器的信息,一方面根据会话的当前状态作响应的分析处理,决定应当继续发
送哪条命令,另一方面发出下一个命令以后,改变 + 的值,将它置为该命令的状态对
应的值,这就实现了会话过程中的状态转换,并保证会话按照既定的顺序进行。读者可仔
细分析 -"#$88!+'"9:%&函数。
.用结构向量来缓存信件信息
首先程序定义了一个结构类型,用来缓存一封信件信息。
";,
.
#;:7<<存储信件的文本
-:#97<<信件的大小
;;#97<<信件实际下载的大小,在下载过程中动态变化
6##!57
然后为套接字类定义了一个向量型的成员变量,相当于一个数组,其成员是上述的结
构。
(;=##!5>-:7
在 会话中,一次性地将信箱中所有信件的信息转入这个向量,然后可以查阅,存
储到文件中,或者进行其他处理。
9.6.2 创建应用程序的过程
.使用 !9+; 创建应用程序框架
工程名是 ,应用程序的类型是基于对话框的,对话框的标题是“接收电子邮件客
户端程序”,需要 #$ 的支持,其它部分接受系统的默认设置就可以。向导
自动为应用程序创建了两个类:
应 用 程 序 类 : ! , 基 类 是 ! , 对 应 的 文 件 是 和
。
对 话 框 类 : )': , 基 类 是 )+': , 对 应 的 文 件 是 )': 和
)':。
.为对话框添加控件
在程序的主对话框界面中按照图 添加相应的可视控件对象,并按照表 修改控
件的属性。
表 对话框中的控件属性
控件类型 控件 )
+
静态文本 +
)*#!
服务器地址
静态文本 +
)*#!
用户名
静态文本 +
)*#!
口令
编辑框 ?
)*)*#@
编辑框 ?
)*)*2#
编辑框 ?
)*)*!##
复选框 $
)*AB*)3
删除邮箱中的邮件
多文本框
)*A*4
组合选择框 -?
)**3#
%);3 型&
命令按钮 ?,
)*4*44
连接
命令按钮 ?,
)*4*)#
断开
命令按钮 ?,
)!4!3
取消
命令按钮 ?,
)*4*@
查看邮件
命令按钮 ?,
)*4*#!@
存 储
.定义控件的成员变量
按照表 C,用类向导%'+9+;&为对话框中的控件对象定义相应的成员变量。
表 C控件对象的成员变量
控件 )
;')
变量名称
-?; @+;+?'
4+-
变量类别
+:;"
变量类型
@+;+?'"
)*)*#@ -*;#;(; @+', #;:
)*)*2# -*;2; @+', #;:
)*)*!## -*;+ @+', #;:
)*AB*)3 -*?')' @+', 3
)**3# -*;3 ;' -?
)*A*4 -* @+', #;:
-*;' ;' ;'
D.为对话框中的控件对象添加事件响应函数
按照表 ,用类向导%'+9+;&为对话框中的控件对象添加事件响应函数。
表 对话框控件的事件响应函数
控件类型 对象标识 ?E) 消息 +: 函数 -?;,
命令按钮
)*4*44 4*3B)
命令按钮
)*4*)# 4*3B) )
命令按钮
)*4*@ 4*3B) @
命令按钮
)*4*#!@ 4*3B) #+(
F.为 )': 类添加其它的成员
()%345G+:&7<<在不同的会话阶段显示不同的信息
-"#$#$7<<套接字类对象实例
.创建从 !"#$ 类继承的派生类
为了能够捕获并响应 $ 事件,应创建用户自己的套接字类,可利用类向导添加。
'+" 选择 '+,类名为 -"#$,基类是 !"#$ 类,创建后
对 应 的 文 件 是 -"$ 和 -"$ 。 在 利 用 类 向 导 为 -"$ 类 添 加
,' 和 ( 三个事件处理函数,并为它添加一般的成员函数
和变量。可参看下一小节的程序代码。
C.手工添加包含语句以及事件函数和成员函数的代码
剩余14页未读,继续阅读
luo3532861
- 粉丝: 0
- 资源: 33
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页