当前位置:首页 > CSU通信网原理课程设计
}
}
printf(\
main() {
int frame,a,flag=0; /*frame帧号,a指向窗口当前位
置,flag是否有重发(0没有,1有)*/
int err;
char end='n',ch,ACK;
int ack[5]; /*定义一个可存储5个确认信息
的*/
wsend *ws; wrece *wr;
ws=(wsend *)malloc(sizeof(wsend)); wr=(wrece *)malloc(sizeof(wrece)); Init(ws,wr);
printf(\程序开始运行\\n\while(end!='y'&&end!='Y') {
/*传送处理*/ a=ws->front;
while(a
30
{ if(ws->s[a].timeout==6) { ws->s[a].timeout=1; flag=1;
printf(\重发第%d帧\\n\
}
else ws->s[a].timeout++; a++;
} if(flag==0) { printf(\请输入需传送的帧号(0代表不输入):\ scanf(\ if(frame!=0) { err=SEND(ws,wr,frame);
if(err==0)printf(\发送窗口已满!\\n\
printf(\接收窗口期待接收到的为:%d\\n\
}
}
31
帧号
ch=getchar();
/*接收处理*/
printf(\请输入需接收的帧号(0代表不输入):\scanf(\
if(frame!=0) err=RECE(wr,frame,ack);
if(err==0)printf(\接收窗口已空,没有接受的帧!\\n\ch=getchar();
/*帧确认处理*/
printf(\是否进行确认?(y/n):\scanf(\if(ACK=='y'||ACK=='Y') { }
else if(ACK=='n'||ACK=='N') /*已发送帧err=ACKNOWLEDGE(ws,ack);
if(err==0)printf(\发送窗口已空!没有需确认的帧!\\n\
的计时器加1*/
{
printf(\不接收确认!\\n\a=ws->front;
32
while(a
}
}
ch=getchar();
/*打印窗口帧号*/
PRINT(ws,wr);
printf(\程序结束?y/n:\ scanf(\
}
}
二、网络即时通讯程序
1、服务器端 1.1:登录窗体
33
共分享92篇相关文档