送方发送数据帧超时;Р(3)校验错误时,丢弃数据帧,并发送否认帧nak;Р(4)如果出现接收超时(假定未收到发送方发送的数据帧),则不给发送发任何回应;Р(5)如果校验正确,首先判断是否是上一帧的重发。是上一帧的重发,则丢弃数据帧,并发送确认帧ack;是新的数据帧,则保存数据帧到当前接收窗口,并发送确认帧ack。Р(6)送数据帧至主机。Р5.源代码Р5.1 发送方的主要代码:Рvoid InitLine(LinkQueue *q) Р{Р?q->front = q->rear = NULL;Р}Рint QueueEmpty(LinkQueue *q)Р{Р?return q->front == NULL && q->rear == NULL;Р}Рframe QueueFront(LinkQueue *q) Р{Р?if (QueueEmpty(q))Р {РР printf("队列为空!\n");Р? Sleep(SLEEPMS);Р exit(0);Р }Р?return q->front->head_data;Р}Рint QueueLen(LinkQueue *q)Р{Р?if (QueueEmpty(q))Р {Р??return 0;Р }Р?int num = 0;Р?Framenode *p = q->front;Р?while(p != NULL)Р?{Р??num++;Р??p = p->next;Р?}Р?return num;Р}Рvoid GetFrameFromHost(LinkQueue *q) Р{Р?if(QueueLen(q) >= MAXPOOL) Р?{Р??printf("data %d 已准备好\n", q->front->head_data.head.seq);Р??return;