计算机网络实验1.docx

上传人:b****5 文档编号:29110173 上传时间:2023-07-20 格式:DOCX 页数:16 大小:206.72KB
下载 相关 举报
计算机网络实验1.docx_第1页
第1页 / 共16页
计算机网络实验1.docx_第2页
第2页 / 共16页
计算机网络实验1.docx_第3页
第3页 / 共16页
计算机网络实验1.docx_第4页
第4页 / 共16页
计算机网络实验1.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

计算机网络实验1.docx

《计算机网络实验1.docx》由会员分享,可在线阅读,更多相关《计算机网络实验1.docx(16页珍藏版)》请在冰豆网上搜索。

计算机网络实验1.docx

计算机网络实验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与奇偶校验的工作特性。

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

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1