Java实现停止等待算法模拟

停止等待协议:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
图片来自课件:《计算机网络(第六版)》课件制作人:谢希仁。

代码:
只实现了计算校验码、CRC校验无差错情况和CRC校验有差错情况的模拟
Tools:

public class Tools {
   
    /**
     * CRC和计算校验码
     * @param data                 数据
     * @param generatorPolynomial  生成多项式
     * @param checkCode            校验码
     * @return                     当校验码为空时,用生成多项式计算校验码,当校验码不为空时,返回余数。
     */
    public static String isRightData(String data,String generatorPolynomial,String checkCode){
   
        //给data加上4(生成多项式长度减一)个零         11010110110000
        if(checkCode==null){
   
            for(int i=0;i<generatorPolynomial.length()-1;i++){
   
                data+="0";
            }
        }else {
   //校验码不为空,给数据加上校验码,
            data+=checkCode;
        }
        System.out.println("data:"+data);
        String res=data.substring(0,generatorPolynomial.length());//11010
        System.out.println("data的前五位"+res);
        data=data.substring(generatorPolynomial.length());//data去掉前五位数 :110110000

        //当data的长度为0时结束
        while(data.length()!=0){
   
            //按位异或
            res=getRes(res,generatorPolynomial);
            System.out.println("异或的结果为:"+res);

            //让res的长度与 生成多项式的长度相同
            while (res.length()<generatorPolynomial.length()){
   
                if(data.length()!=0){
   
                    //当res的长度为0时,0不往res上加 ,让res的第一为始终为1
                    if(data.charAt(0)=='0'&&res.length()
  • 17
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值