循环冗余码的生成和验证Word文件下载.docx

上传人:b****2 文档编号:4123218 上传时间:2023-05-02 格式:DOCX 页数:11 大小:17.38KB
下载 相关 举报
循环冗余码的生成和验证Word文件下载.docx_第1页
第1页 / 共11页
循环冗余码的生成和验证Word文件下载.docx_第2页
第2页 / 共11页
循环冗余码的生成和验证Word文件下载.docx_第3页
第3页 / 共11页
循环冗余码的生成和验证Word文件下载.docx_第4页
第4页 / 共11页
循环冗余码的生成和验证Word文件下载.docx_第5页
第5页 / 共11页
循环冗余码的生成和验证Word文件下载.docx_第6页
第6页 / 共11页
循环冗余码的生成和验证Word文件下载.docx_第7页
第7页 / 共11页
循环冗余码的生成和验证Word文件下载.docx_第8页
第8页 / 共11页
循环冗余码的生成和验证Word文件下载.docx_第9页
第9页 / 共11页
循环冗余码的生成和验证Word文件下载.docx_第10页
第10页 / 共11页
循环冗余码的生成和验证Word文件下载.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

循环冗余码的生成和验证Word文件下载.docx

《循环冗余码的生成和验证Word文件下载.docx》由会员分享,可在线阅读,更多相关《循环冗余码的生成和验证Word文件下载.docx(11页珍藏版)》请在冰点文库上搜索。

循环冗余码的生成和验证Word文件下载.docx

End

reg的后四位就是我们所要求的余数。

解码验错:

把循环冗余码作为原始的数据

Ifreg里的数据不为0则要求重发

Else把循环冗余码去掉后四位即是原始数据

End

四、流程图

开始

编码方界面

循环冗余编码

解码方界面

解码:

是否能除尽

传送

显示原始数据

结束

五、运行结果

六、心得体会

通过此次编程,我更加了解了循环冗余码,循环冗余校验码又称为多项式码,是一种线性分组码,广泛应用在计算机网络和数据通信中。

CRC码是由两部分组成,前部分是信息码,就是需要校验的信息,后部分是校验码,校验是从数据本身进行检查,它依靠某种数学上约定的形式进行检查,校验的结果是可靠或不可靠,如果可靠就对数据进行处理,如果不可靠,则要进行重发。

CRC校验由于实现简单,检错能力强,被广泛使用在各种数据校验应用中。

占用系统资源少,用软硬件均能实现,是进行数据传输差错检测地一种很好的手段。

此次编程,让我更加熟练的使用JAVA,并且让我知道了如何用JAVA来实现模2除法。

此次编程,收获颇丰。

七、源程序清单

importjava.util.Random;

importjava.awt.Event.*;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.awt.event.WindowAdapter;

importjava.awt.event.WindowEvent;

importjava.awt.event.WindowListener;

importjava.awt.*;

importjavax.swing.*;

publicclasstextendsJFrameimplementsActionListener{

Stringstr1,ss;

intfla=0;

Panelp1=newPanel();

Panelp2=newPanel();

JLabellab1=newJLabel("

输入"

);

JTextFieldt1=newJTextField(20);

JButtonbt1=newJButton("

确定"

JButtonbt2=newJButton("

发送"

JButtonbt3=newJButton("

重输"

JTextAreat2=newJTextArea();

JTextAreat3=newJTextArea();

JScrollPanesp=newJScrollPane(t2,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

JScrollPanesp1=newJScrollPane(t3,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

publict(){

super("

编码"

p1.setLayout(newFlowLayout());

p1.add(lab1);

p1.add(t1);

add(p1,"

North"

add(sp);

p2.setLayout(newGridLayout(1,3));

p2.add(bt1);

p2.add(bt2);

p2.add(bt3);

add(p2,"

South"

bt1.addActionListener((ActionListener)this);

bt2.addActionListener((ActionListener)this);

bt3.addActionListener((ActionListener)this);

setSize(350,350);

setVisible(true);

addWindowListener(newwindowclose());

}

voidtt2(){

JFrameframe=newJFrame("

解码"

setLayout(newGridLayout(0,1));

frame.add(sp1);

frame.setSize(350,350);

frame.setVisible(true);

publicclasswindowcloseextendsWindowAdapter{

publicvoidwindowClosing(WindowEvente){

System.exit(0);

publicvoidactionPerformed(ActionEvente){

if(e.getActionCommand().equals("

))

{

t1.setEditable(false);

{if(fla==0)

tt2();

str1=t1.getText();

send();

}

t1.setText("

"

t2.setText("

ss="

;

t1.setEditable(true);

t3.setText("

fla++;

privatevoidsend(){//数据处理求余发送

int[]dat;

int[]reg={1,0,0,1,1};

//生成多项式

int[]res={0,0,0,0,0};

//存放校验和

intlen1=str1.length();

char[]a1=str1.toCharArray();

t2.append("

生成多项式是:

t3.append("

for(inti=0;

i<

reg.length;

i++){

t2.append("

"

+reg[i]);

t3.append("

\n"

for(inti=0;

i<

len1;

i++){

Stringstr=Integer.toBinaryString(a1[i]);

intlen=str.length();

Strings1="

s2;

dat=newint[len+4];

for(intn=0;

n<

len+4;

n++){

dat[n]=0;

}

char[]a2=str.toCharArray();

len;

Strings=String.valueOf(a2[n]);

dat[n]=Integer.parseInt(s);

for(intk=0;

k<

5;

k++){

res[k]=dat[k];

intj=0;

if(res[j]==1){

for(j=0;

j<

4;

j++){

res[j]=res[j+1]^reg[j+1];

}

}else{

res[j]=res[j+1];

}

if(k<

len-1){

res[4]=dat[k+5];

s2=String.valueOf(res[k]);

s1=s1.concat(s2);

正在发送"

+"

+a1[i]+"

:

+str+s1+"

intf=receive(str+s1);

//接收方处理

if(f==1){

t2.append("

发送成功!

!

发送失败,重发·

·

i=i-1;

}

privateintreceive(Stringstr){//接收后校验返回信息

intflag,fg;

intlen=str.length();

dat=newint[len];

char[]a3=str.toCharArray();

for(intn=0;

Strings=String.valueOf(a3[n]);

dat[n]=Integer.parseInt(s);

Randomrandom=newRandom();

//产生随机错误

if(random.nextInt(9999)%20==0){

inti=random.nextInt(len-1);

if(dat[i]==1)

dat[i]=0;

else

dat[i]=1;

for(intk=0;

res[k]=dat[k];

len-4;

k++){//校验

intj=0;

if(res[j]==1){

for(j=0;

res[j]=res[j+1]^reg[j+1];

}else{

res[j]=res[j+1];

if(k<

len-5){

res[4]=dat[k+5];

for(fg=0;

fg<

fg++){

if(res[fg]!

=0)

break;

if(fg==4)//接收成功则在接受窗口显示

接收到:

+str+"

flag=1;

Stringch=str.substring(0,len-4);

Integeraa=Integer.valueOf(ch,2);

byte[]b=newbyte[1];

b[0]=(byte)aa.byteValue();

Strings1=newString(b);

ss=ss+s1;

+s1+"

接收成功!

}else{//接受失败

flag=0;

+s1+"

接收失败,重传·

."

+"

returnflag;

publicstaticvoidmain(String[]args){

newt();

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2