预览加载中,请您耐心等待几秒...
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);}elsep[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;elseif(ti[i]>(T[i]+Tmax))p[j].time=(T[i]+Tmax);elseif(ti[i]<(T[i]+Tmin)){p[j].time=(T[i]+Tmin);}elsep[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;elseif(ti[i]>(T[i]+Tmax))p[j].time=(T[i]+Tmax);elseif(ti[i]<(T[i]+Tmin)){p[j].time=(T[i]+Tmin);}elsep[j].time=ti[i];cout<<"dhcp"<<p[j].user<<"OFR"<<j<<""<<p[j].time<<endl;break;}}elseif