我的总体思路是:首先用C#语言在VS2010环境下设计一个控制台应用程序,进行调试、实验,最后再根据此模拟程序设计出Windows窗体应用程序。
由于我设计的控制台应用程序是模拟程序,因此我把发送方和接收方设计在同一版面上。它们各自的功能同时在同一版面上实现及显示。在程序代码实现后,我们可以通过在同一版面上的提示输入相关信息,便可得到模拟过程。再通过Windows窗体应用程序将控制台应用程序转化。
虽然只有一个版面,但是发送方和接收方的功能是清晰可见的。根据流程图的实现步骤,我编写了以下的程序代码。
4.3.1 发送方程序
本程序设有四个变量:一是窗口大小变量,二是第一帧序列号变量,三是最近发送的帧变量,四是最近收到的确认帧变量。
long a;
int flag, b;
sendq_slot sendq_rear = new sendq_slot();
sendq_slot sendp = new sendq_slot();
sendq_slot p3 = new sendq_slot();
sendq_slot p4 = new sendq_slot();
recvq_slot recvp = new recvq_slot();
recvq_slot recvq_rear = new recvq_slot();
recvq_slot p1 = new recvq_slot();
recvq_slot p2 = new recvq_slot();
swqstate1 Swpstate1 = new swqstate1(); //申明一系列的变量
Swpstate1.head = null; //变量初始值为空
Swpstate1.sendq = sendq_rear;
if (Swpstate1.sendq == null) Environment.Exit(0);
recvq_rear.next = null;
System.Console.Write("请输入窗口大小:");
Swpstate1.sws = long.Parse(System.Console.ReadLine()); //输入窗口大小
Swpstate1.rws = Swpstate1.sws; //把窗口大小的值赋给变量
if (Swpstate1.sws > 0)
{
System.Console.Write("请输入第一帧的序号:");
Swpstate1.hdr.seqnum = long.Parse(System.Console.ReadLine());//输入第一帧序号 C#滑动窗口协议的软件设计与实现(8):http://www.751com.cn/jisuanji/lunwen_8003.html