计算机网络实验1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
杭州电子科技大学实验报告
学生姓名:韩民杨实验地点: 1#108学号: 12081420 指导教师:吴端坡
实验时间: 2015-4-24
一、实验室名称: 1#108
二、实验项目名称:计算机网络实验1
Coding on error dectecting algorithms(C++)
三、实验学时:
四、实验原理: C++编程
五、实验目的:利用 C++编程 CRC16校验及奇偶校验
六、实验内容:
Coding on error dectecting algorithms(C++)
1.Cyclic redundancy check
Using the polynomials below to encode random generated data
stream (40-100bits). Show the FEC, and encoded data frame.
CRC-4x4+x+1ITU G.704
CRC-16x16+x15+x2+1IBM SDLC
CRC-32x32+x26+x23+...+x2+ ZIP, RAR, IEEE 802 LAN/FDDI, IEEE x+11394, PPP-FCS
For the error patter listed below, what the conclusion does the receiver get? Can the receiver find the errors?
Case Error pattern
No error0000⋯⋯ 0000
One error1000⋯ ..000
Two errors100⋯ .001
Random errors Random error pattern
2.Parity check
Using even or odd parity check on random generated data stream (8-20bits).
Show encoded data frame.
For the error patter listed below, what the conclusion does the receiver get?
Can the receiver find the errors?
Case Error pattern
No error0000⋯⋯ 0000
One error1000⋯ ..000
Two errors100⋯ .001
七、实验器材(设备、元器件):
PC 机一台,装有 C++集成开发环境。
八、实验步骤:
#include
#include
#include
#include
#include
#include
#define NO_ERROR 1
#define ONE_ERROR 2
#define TWO_ERROR 3
#define RANDOM_ERROR 4
#define RESULT 1
#define CRC 0
#define Parity 0
#define check 1
int flag_parity;// 判断奇偶校验
void ByteToBit(char* out,const char* in,int bits);
void input_message(char*message);
int xor(char **p, char *d,int len);
char *crc_function(char *str_p,int len,char *dividend,int len_d,int type,char *crc_p ); char Parity_check(char *message_output,int length,int mode);
void main()
{ int pattern = 0;
int channel_way =0;
char message[8]={NULL};// data that produced by chance
char message_output[1000] = {NULL};
char message_crc[] = {NULL};//transport
int length;//message's length
/* 这是固定了为 4 为的crc,当这里改变是就可以直接改变crc 的长度了*/ char dividend[]="10011";
char message_input[1000]="";
/* 这里可以更改数值当时16 为 crc 的时候,此时的len_d 为 15*/
int len_d=5;//被除数长度设置
char flag;
while (true)
{ fflush(stdin); //任
意输入数据
printf("please input the message!\n");
gets(message);
printf("A need to send this message:%s\n",message);
length = strlen(message);
ByteToBit(message_output,message,length*8);
for(int k = 0;k { printf("%d",message_output[k]); message_input[k] = message_output[k]+48; } pattern = 0; channel_way =0; printf("\n"); printf("Coding on error dectecting algorithms\n"); printf(" 1.Cyclic redundancy check\n"); printf(" 2.Parity check \n"); printf("please chice pattern: \n"); /* 选择进入的检错模式 */ scanf("%d",&pattern); fflush(stdin);// 清空缓存区 if(pattern == 1)