计算机网络课程设计报告---csmacd协议仿真内容摘要:

dl。 nRetCode=1。 } else { thread1=AfxBeginThread(aThread,NULL)。 //启动线程 a ID1=thread1m_nThreadID。 //获取线程 ID 号 thread2=AfxBeginThread(bThread,NULL)。 //启动线程 b ID2=thread2m_nThreadID。 //获取线程 ID 号 getchar()。 } return nRetCode。 } UINT aThread(LPVOID pParam) //线程 a(主机 a) { int i=0。 //发送成功次数 int CollisionCounter=16。 //冲突计数器初始值为 16 double Collisionwindow=。 //冲突窗口值取 int randNum=rand()%3。 //随机数 可用 Srand函数改变随机函数的种子,改善随机性 Loop:if (Bus==0) //总线空闲 { Bus=Bus|ID1。 //模拟发包 Sleep(12)。 // 单位是毫秒 , 分析:本实验模拟模 a 发送时延为 12ms 试验时可以更改时延观察不同发送时延对碰撞的影响。 拟 试验延 if(Bus==ID1) //无冲突, 由发送方负责检测 { printf(%d Send Success\n\n,ID1)。 //发送成功 Bus=0。 //内存清零 CollisionCounter=16。 //复原冲如计数器 Sleep(rand()%10)。 分析: 本次试验选用随机的帧长度相当于重新配置,两个线程同时进行监听。 // 模 拟帧间隙 i++。 printf(主机 a 发送成功次数 =%d\n\n,i)。 if(i10) goto Loop。 //发送次数不够 10 次,开始下一次发送 } else { printf(%d Send Collision\n\n,ID1)。 //发生冲突 Bus=0。 CollisionCounter。 //冲突计数器减 1 if(CollisionCounter0) { Sleep(randNum*(int)pow(,(CollisionCounter10)?10:CollisionCounter)*Collisionwindow)。 分析:使用截至二进制退避算法,在发生碰撞时,等待随机时间,进行监听和发送。 goto Loop。 //下一次尝试发送 }。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。