CRC实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
沈阳工程学院
学生实验报告
实验室名称:信息工程系软件实验室
实验课程名称:计算机网络
实验项目名称:CRC校验编程实现
班级:软本094
姓名:王诗娟陈志银刘云峰
学号:02、10、14
实验日期:2012年03月26日实验台编号:15 指导教师:郑秀颖
批阅教师(签字):成绩:
一.实验目的
掌握并理解CRC校验算法,编程实现CRC。
二.实验内容
1.设计CRC校验算法。.
2.编程实现CRC校验。
三.实验前的准备
1.复习、熟悉CRC校验算法。
2.编写好程序,上机调试。
四.实验要求及实验软硬件环境
【基本要求】
1.掌握并理解CRC校验算法。
2.编程实现CRC。
3.完成实验报告。
【实验组织方式】
小组实验。
【实验条件】
配置有java运行环境的微机一台,MyEclipse。
五.实验步骤
1.掌握并理解CRC校验算法。
2.设计发送界面。
3.编程实现CRC校验。
4.设计接收界面。
5.调试并实现程序。
6.参加答辩,并撰写实验报告。
六.主要程序部分(Java语言实现)
1.发送端主界面MainFrame.java 的主要代码如下所示。
jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
String input1 = new String(jtf1.getText());
String input2 = new String(jtf2.getText());
if("".equals(input1) || "".equals(input2) || input1 == null || input2 == null){JOptionPane.showMessageDialog(jf, "请输入。。。", "错误", JOptionPane.ERROR_MESSAGE);
}else{ if(dealer.legal_binary(input1)){
if(dealer.legal_g_p(input2)){
String checkSum = dealer.get_cheksum(input1, input2);
String endResult = new String(input1+checkSum);
jtf3.setText(checkSum);
jtf4.setText(endResult);
try {
String tem =endResult + "." +input2;
fo.inputFile(tem);
} catch (Exception e1) {
e1.printStackTrace();}
}else{
JOptionPane.showMessageDialog(jf, "输入的生成多项式不正确", "错误", JOptionPane.ERROR_MESSAGE);
}
}else{
JOptionPane.showMessageDialog(jf, "输入不正确", "错误", JOptionPane.ERROR_MESSAGE);
} }
}
});
jb2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
jp1.setVisible(false);
GetMessage gm = new GetMessage();
String str="";
try {
str = fo.outputFile();
} catch (Exception e) {
e.printStackTrace();
}
String L="";
String R="";
int k= str.length();
for (int i = 0; i < str.length(); i++)
{
if (str.substring(i, i + 1).equals("."))
{
L=str.substring(0,i).trim();
R=str.substring(i+1,k).trim();
}
}
gm.jtf1.setText(L);
gm.jtf2.setText(R);
String res = dealer. get_cheksum (str, R);
gm.jtf3.setText(res);
gm.setVisible(true);
jf.add(gm);
}
});
2.对发送和接收的处理类Dealer.java的主要代码如下所示。
public class Dealer {
public boolean legal_binary(String str) {
for (int i = 0; i < str.length(); i++) {
if (('0' != str.charAt(i)) && ('1' != str.charAt(i))) {
return false;
}
}
return true;
}
public boolean legal_g_p(String str) {
if ((('1' == str.charAt(0)) && ('1' == str.charAt(str.length() - 1)) && legal_binary(str))) {
return true;
}
return false;
}
public StringBuffer montage(StringBuffer sb, int length) {
for (int i = 0; i < length - 1; i++) {
sb.append("0");}return sb;
}