预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

百川东到海,何时复西归?少壮不尽力,老大徒伤悲。——汉乐府《长歌行》 第22次CSP认证第三题——DHCP服务器(C++) DHCP服务器 ⾃⼰写得⽐较繁琐,但可以AC #include<iostream> #include<string> usingnamespacestd; classI { public: stringuser;//使⽤该IP的发送主机名称 //intnum;//ip地址 intstate;//ip状态 inttime;//IP过期时间 I() { user=""; //num=0; state=0; time=0; } }; intmain() { //数据定义 intN,Tdef,Tmax,Tmin; stringH; intn; cin>>N>>Tdef>>Tmax>>Tmin>>H>>n; stringstr1[n],str2[n],str3[n]; Ip[N+1]; intIP[n],ti[n]; intT[n]; for(inti=0;i<n;i++)//输⼊数据 { cin>>T[i]>>str1[i]>>str2[i]>>str3[i]>>IP[i]>>ti[i]; } intsign=0; //intsym=0; for(inti=0;i<n;i++)//对每⼀个输⼊数据进⾏计算 { if(str2[i]=="dhcp"||str2[i]=="*") { if(str3[i]!="DIS"&&str3[i]!="REQ")//排除掉⽆效输⼊ continue; if((str2[i]=="*"&&str3[i]!="DIS")||(str2[i]=="dhcp"&&str3[i]=="DIS")) continue; for(intj=1;j<(N+1);j++)//重新计算各个IP的状态--根据时间 { if(T[i]>=p[j].time)//如果过期 { if(p[j].state==2)//占⽤状态 { p[j].state=3; p[j].time=0; } elseif(p[j].state==1)//待分配状态 勿以恶小而为之,勿以善小而不为。——刘备{ 穷则独善其身,达则兼善天下。——《孟子》 p[j].state=0; p[j].user=""; p[j].time=0; } } } if(str3[i]=="DIS")//类型为DIS { sign=0;//标明状态 for(intj=1;j<(N+1);j++)//发送主机是占⽤者 if(p[j].user==str1[i]) { IP[i]=j; p[j].state=1; sign=1; if(ti[i]==0)//计算IP过期时间 p[j].time=T[i]+Tdef; else { if(ti[i]>(T[i]+Tmax)) p[j].time=(T[i]+Tmax); else { if(ti[i]<(T[i]+Tmin)) { p[j].time=(T[i]+Tmin); } else p[j].time=ti[i]; } } cout<<"dhcp"<<p[j].user<<"OFR"<<j<<""<<p[j].time<<endl; break; } if(sign==0) for(intj=1;j<(N+1);j++)//最⼩未分配 if(p[j].state==0) { IP[i]=j; p[j].user=str1[i]; p[j].state=1; sign=1; if(ti[i]==0)//计算IP过期时间 p[j].time=T[i]+Tdef; else if(ti[i]>(T[i]+Tmax)) p[j].time=(T[i]+Tmax); else if(ti[i]<(T[i]+Tmin)) { p[j].time=(T[i]+Tmin); } else p[j].time=ti[i]; cout<<"dhcp"<<p[j].user<<"OFR"<<j<<""<<p[j].time<<endl; break; } 丈夫志四方,有事先悬弧,焉能钧三江,终年守菰蒲。——《顾炎武》 if(sign==0) 百川东到海,何时复西归?少壮不尽力,老大徒伤悲。——汉乐府《长歌行》 if(sign==0) for(intj=1;j<=N;j++)//最⼩过期 if(p[j].state==3) { IP[i]=j; p[j].user=str1[i]; p[j].state=1; sign=1; if(ti[i]==0)//计算IP过期时间 p[j].time=T[i]+Tdef; else if(ti[i]>(T[i]+Tmax)) p[j].time=(T