C语言 计算机网络TCP拥塞控制模拟程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include "stdio.h"
#include "stdlib.h"
void show()
{
//system("cls");
printf("\n");
printf("请输入ssthrest的初始值:\n\n");
printf("请输入需要模拟的传输轮次数:\n\n");
printf("请输入重传的值n:\n");
printf("请输入快重传的值m:\n\n");
}
void main()
{
int sst=0;
int x=0;
int ch=0;
int n=0;//重传的报文段
int m=0;//快重传的报文段
int i=1;//打印传输轮次
int cwnd=1;
int cchuan=0;
do
{
show();
scanf("%d\t%d\t%d\t%d",&sst,&x,&n,&m);
//慢开始
printf("\n拥塞窗口cwnd:");
for(cwnd=1,i=1;cwnd<=sst;i++)
{
printf("%d ",cwnd);
cwnd=2*cwnd;
}
//拥塞避免
for(cwnd=sst;i
cwnd=cwnd+1;
cchuan=cwnd;//标记重传的cwnd
printf("%d ",cwnd);
}
//重传
for(cwnd=1;cwnd<=(0.5*cchuan);i++,cwnd=2*cwnd)
{
printf("%d ",cwnd);
}
//快恢复
for(cwnd=(int)cwnd*0.5;i<=x;i++)
{
cwnd=cwnd+1;
printf("%d ",cwnd);
}
printf("\n");
printf("传输轮次X:");
for(i=1;i<=x;i++)
{
printf("%d ",i);
}
//1990增加的拥塞控制算法
//慢开始
printf("\n\n\nTCP Reno版本\n");
printf("拥塞窗口cwnd:");
for(cwnd=1,i=1;cwnd<=sst;i++)
{
printf("%d ",cwnd);
cwnd=2*cwnd;
}
//拥塞避免
for(cwnd=sst;i
cwnd=cwnd+1;
cchuan=cwnd;//标记重传的cwnd
printf("%d ",cwnd);
}
//快重传 快恢复
for(cwnd=(int)cchuan/2;i
printf("%d ",cwnd);
}
//超时重传
for(cwnd=1;i<=x;i++)
{
printf("%d ",cwnd);
cwnd=cwnd*2;
}
printf("\n");
printf("传输轮次X:");
for(i=1;i<=x;i++)
{
printf("%d ",i);
}
printf("\n\n\t是否继续测试(0/1)?\n");
scanf("%d",&ch);
}while(ch==1);
}