计算机网络实验1.docx
- 文档编号:29110173
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:16
- 大小:206.72KB
计算机网络实验1.docx
《计算机网络实验1.docx》由会员分享,可在线阅读,更多相关《计算机网络实验1.docx(16页珍藏版)》请在冰豆网上搜索。
计算机网络实验1
杭州电子科技大学
实验报告
学生姓名:
韩民杨学号:
指导教师:
吴端坡
实验地点:
1#108实验时间:
2015-4-24
一、实验室名称:
1#108
二、实验项目名称:
计算机网络实验1
Codingonerrordectectingalgorithms(C++)
三、实验学时:
四、实验原理:
C++编程
五、实验目的:
利用C++编程CRC16校验及奇偶校验
六、实验内容:
Codingonerrordectectingalgorithms(C++)
1.Cyclicredundancycheck
Usingthepolynomialsbelowtoencoderandomgenerateddatastream(40-100bits).ShowtheFEC,andencodeddataframe.
CRC-4
x4+x+1
ITU
CRC-16
x16+x15+x2+1
IBMSDLC
CRC-32
x32+x26+x23+...+x2+x+1
ZIP,RAR,IEEE802LAN/FDDI,IEEE1394,PPP-FCS
Fortheerrorpatterlistedbelow,whattheconclusiondoesthereceivergetCanthereceiverfindtheerrors
Case
Errorpattern
Noerror
0000……0000
Oneerror
1000…..000
Twoerrors
100….001
Randomerrors
Randomerrorpattern
2.Paritycheck
Usingevenoroddparitycheckonrandomgenerateddatastream(8-20bits).
Showencodeddataframe.
Fortheerrorpatterlistedbelow,whattheconclusiondoesthereceivergetCanthereceiverfindtheerrors
Case
Errorpattern
Noerror
0000……0000
Oneerror
1000…..000
Twoerrors
100….001
七、实验器材(设备、元器件):
PC机一台,装有C++集成开发环境。
八、实验步骤:
#include<>
#include<>
#include<>
#include<>
#include<>
#include<>
#defineNO_ERROR1
#defineONE_ERROR2
#defineTWO_ERROR3
#defineRANDOM_ERROR4
#defineRESULT1
#defineCRC0
#defineParity0
#definecheck1
intflag_parity;000
Twoerrors100….001
RandomerrorsRandomerrorpattern*/
if(channel_way==NO_ERROR)
{
char*result=NULL;
intflagg=0;
printf("信道中传输数据:
");
for(intf=0;f printf("%c",message_input[f]); printf("\n"); printf("正在检错中.......\n"); printf("检错结果: "); fflush(stdin); result=crc_function(message_input,len,dividend,len_d,RESULT,crc-len_d); for(inti=0;i { printf("%c",*result); if((*result)-48! =0) { printf("\nerror! \n"); flagg=1; break; } result+=1; } if(flagg==0) printf("\nnoerror! \n"); } if(channel_way==ONE_ERROR) { char*result=NULL; message_input[0]=((message_input[0]-48)^('1'-48))+48; printf("信道中传输数据: "); for(intf=0;f printf("%c",message_input[f]); printf("\n"); printf("正在检错中......."); printf("检错结果: "); result=crc_function(message_input,len,dividend,len_d,RESULT,crc-len_d); for(inti=0;i { if(*result=='1') { printf("dataerror! \n"); break; } else { continue; result+=1; } } } if(channel_way==TWO_ERROR) { char*result=NULL; message_input[0]=((message_input[0]-48)^('1'-48))+48; message_input[length*8-1]=((message_input[length*8-1]-48)^('1'-48))+48; printf("信道中传输数据: "); for(intf=0;f printf("%c",message_input[f]); printf("\n"); printf("正在检错中......."); printf("检错结果: "); result=crc_function(message_input,len,dividend,len_d,RESULT,crc); for(inti=0;i { if(*result! ='0') {printf("dataerror! \n"); break; } else {continue; result+=1; } } } if(channel_way==RANDOM_ERROR) { char*result=NULL; intno; srand((unsigned)time(NULL));.....\n"); printf("检错结果: "); result=crc_function(message_input,len,dividend,len_d,RESULT,crc); for(inti=0;i { if(*result! ='0') { printf("dataerror! \n"); break; } else { continue; result+=1; } } } printf("************************************\n"); printf("\n"); printf("\n"); } else { printf("Pleaseselecttheparitymode\n"); printf("parity\n"); printf("parity\n"); scanf("%d",&flag_parity); charm=Parity_check(message_input,length*8,Parity); printf("在信道中传输的message: "); message_input[length*8]=m; for(intmessage_number=0;message_number<=length*8;message_number++) printf("%c",message_input[message_number]); printf("\n"); printf("*************************************\n"); printf("******analogchannel******\n"); printf("***pleasechoicethewayoferror****\n"); printf("****error*****\n"); printf("****error*****\n"); printf("****errors*****\n"); scanf("%d",&channel_way); if(channel_way==NO_ERROR) { for(intf=0;f printf("%c",message_input[f]); printf("正在检错中.......\n"); printf("检错结果: "); charflag_parity_mode=Parity_check(message_input,length*8,check); if(flag_parity_mode==(message_input[length*8])) printf("noerror! \n"); } if(channel_way==ONE_ERROR) { message_input[0]=((message_input[0]-48)^('1'-48))+48; for(intf=0;f printf("%c",message_input[f]); printf("正在检错中.......\n"); printf("检错结果: "); charflag_parity_mode=Parity_check(message_input,length*8,check); printf("error! \n"); } if(channel_way==TWO_ERROR) { message_input[0]=((message_input[0]-48)^('1'-48))+48; message_input[length*8-1]=((message_input[length*8-1]-48)^('1'-48))+48; for(intf=0;f printf("%c",message_input[f]); printf("正在检错中.......\n"); printf("检错结果: "); charflag_parity_mode=Parity_check(message_input,length*8,check); printf("noerror! \n"); } printf("************************************\n"); printf("\n"); printf("\n"); } fflush(stdin); printf("doyouwanttocontinuey/n\n"); scanf("%c",&flag); if(flag=='y') continue; else break; } } /*********************************************** /function: 完成字节转换成位的功能 /输入字符: In输出的二进制: Out ************************************************/ voidByteToBit(char*out,constchar*in,intbits) { 中'0'=48 for(j=0;j { /*把1传入 48表示为"0";*/ if(*input_p==48) { 入界面 2.输入数据 3.CRC校验 1)Noerror 2)Oneerror 3)Twoerrors 4)Randomerrors 4.奇偶校验 ①界面 ②Evenparity 1)Noerror 2)Oneerror 3)Twoerrors ③Oddparity 1)Noerror 2)Oneerror 3)Twoerrors 十、实验结论: 奇偶校验,1位错可发现,2位错不可发现(奇数个错可发现,偶数个错不可发现)。 而CRC校验,奇数或偶数个错均能发现。 说明CRC校验比奇偶校验好的多。 十一、总结及心得体会: 通过本次实验,加深了C++的学习,虽然是结合网上的一些资料,但还是圆满完成,上次叫的作业写的不是很认真,望老师见谅,并且了解了CRC与奇偶校验的工作特性。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 实验