(1)、简单强大:Windows窗体可用于设计窗体和可视控件,以创建丰富的基于Windows的应用程序。
(2)、新的数据提供程序管理:数据提供程序管理提供易于连接OLEDB和ODBC数据源的数据控件,包括Microsoft SQL Server、Microsoft Access、Jet、DB2以及Oracle等。
(3)、安全:Windows窗体充分利用公共语言运行库的安全特性。这就意着,一切都可以通过Windows窗体来实现,包括在浏览器中运行的不可信控件和用户硬盘上安装的完全可信的应用程序。
(4)、灵活的控件:Windows窗体提供了一套丰富的控件,并且开发人员可以定义自己有特色的新的控件。
(5)、方面的数据显示和操作:应用程序开发中最常见的情形之一是在窗体上显示数据。Windows窗体对数据库处理提供全面支持。可以访问数据中的数据,并在窗体上显示和操作数据。
(6)、向导:向用户提供创建窗体、数据处理、打包和部署等的分布指导。
Microsoft Visual Studio 2010中Windows窗体的界面如下图6:
图6 Windows窗体界面
4 设计方案及分析
4.1 滑动窗口机制总体设计及分析
图7 发送方和接收方状态示意图
根据上图图7的窗口机制示意图,设计步骤分析:
(1) 初态
发送方没有帧发出,发送窗口前后沿重合。接收方0号窗口打开,等待接收0号帧;
(2)发送0号帧
发送方0号窗口打开,表示已发出0号帧但尚未确认返回信息。接收窗口状态不变;
(3)发送1号帧
发送方0、1号窗口打开,表示0、1号帧都在等待确认之列,至此发送方打开的窗口数达到规定限度,在没有收到新的确认返回帧之前,发送方暂停发送新的数据帧。接收窗口此时状态仍未变;
(4)接收0号帧
接收方已收到0号帧,0号窗口关闭,1号窗口打开,表示准备接收1号帧。此时发送窗口状态不变;
(5)接收、确认0号帧
发送方收到接收方发来的0号帧的确认返回信息,关闭0号窗口,表示从重发表中删除0号帧。此时接收窗口状态仍不变;
(6)发送2号帧
发送方继续发送2号帧,此时2号窗口打开,表示2号帧也进入待确认之列,至此发送方打开的窗口又达到规定限度,而且在未收到新的确认返回帧之前,发送方将暂停发送新的数据帧。此时接收窗口状态仍不变;
(7)接收1号帧
接收方已收到1号帧,1号窗口关闭,2号窗口打开,表示准备接收2号帧。此时发送窗口状态不变;
(8)接收、确认1号帧
发送方收到接收方发来的1号帧的确认返回信息,关闭1号窗口,表示从重发表中删除1号帧。此时接收窗口状态仍不变。
4.2 协议选择及分析
在设计过程中,我主要使用了选择重发协议,该协议能很好地弥补停等协议和回退N步协议的缺点,是比较完善的滑动窗口协议。
在选择重发协议中,当接收方发现某帧出错时,其后继续传送来的正确的帧虽然不能立刻递交给接收方的高层,但接收方仍然可接收下来,暂时存放在一个缓冲区中,同时要求发送方重新发送出错的那一帧。一旦收到重新传来的确认信息后,就可以将原已存于缓冲区中的其余帧正确的帧一并按照正确的顺序递交高层。这种方法称为选择重发(SELECTICE REPEAT),其工作过程如下图所示。显然,选择重发减少了浪费,提高了传输效率,但要求接收方有足够大的缓冲区空间。如下图8所示,原理与之前1.2.3介绍的相同。
图8 选择重传协议原理图
4.3 发送方与接收方设计流程 C#滑动窗口协议的软件设计与实现(7):http://www.youerw.com/jisuanji/lunwen_8003.html