欢迎来到天天文库
浏览记录
ID:57685056
大小:224.50 KB
页数:8页
时间:2020-09-01
《计算机网络实验五.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、.广州大学学生实验报告开课学院及实验室:计算机学院,电子信息楼416A室2014年12月10日学院计算机科学与教育软件学院年级/专业/班计科122庞彬学号1206100022实验课程名称计算机网络实验成绩实验项目名称实验五:网络程序设计指导老师刘淼一、实验目的通过编程理解网桥的功能及计算机如何处理一个文件的16位校验和。二、实验环境装有JDK环境和Eclipse的电脑一台。三、实验内容u写一个程序来模拟网桥功能。模拟实现网桥的转发功能,以从文件中读取帧模拟网桥从网络中收到一帧,即从两个文件中读入一系列帧,从第一个文件
2、中读入一帧然后从第二个文件中再读入一帧,如此下去。对每一帧,显示网桥是否会转发。要求:Windows或Linux环境下运行,程序应在单机上运行。分析:用程序模拟网桥功能,可以假定用两个文件分别代表两个网段上的网络帧数据。而两个文件中的数据应具有帧的特征,即有目的地址,源地址和帧内数据。程序交替读入帧的数据,就相当于网桥从网段中得到帧数据,当然如果模拟的数据量比较少,也可以用两个数组代替两个文件存放帧数据,同样达到代表两个网段上的帧数据的效果。对于网桥来说,能否转发帧在于把接收到的帧与网桥中的转发表相比较。判断目的地址
3、后才决定是否转发。由此可见转发的关键在于构造转发表。这里转发表可通过动态生成。四、实验步骤、记录和结果(一)写一个程序来模拟网桥功能。1、实验程序如下。importjava.util.*;publicclassBridge{..publicstaticvoidmain(Stringargs[]){//接口1中存在ABCDEFStringstr1[]={"AB","CA","DB","DA","AH","CB","DN","DC","BC","AC","EF","FE"};//接口2中存在GHIMNOStringstr
4、2[]={"GF","HA","NB","OH","NG","GN","HF","GC","HA","GE","OC",""};//将字符串str1与str2交替存放在字符串s1中Strings1[]=newString[100];intq=0,p=0;for(inta=0;a<100;a++){//在字符串中偶数的存放str1if(a%2==0&&q5、2[p];p++;}}Stringbridge[]=newString[100];//建立网桥,数组可以存储100个地址bridge[0]=newString("as");//首先建立第一任意的地址形式,以便以后调用复制intm=0;intflag2=0;//循环调用字符串数组s1的地址for(inti=0;s1[i]!=null;i++){chark[]=s1[i].toCharArray();//将字符串s1[i]转换为字符,以便调用源地址和目的地址//循环调用网桥数组中的地址,判断源地址是否在网桥转发表中for6、(intj=0;bridge[j]!=null;j++){charbridge2[]=bridge[j].toCharArray();//初始化源地址..if(k[0]==bridge2[0])//检查第一个发送地址是否在网桥的转换表上{flag2=0;for(intb=0;bridge[b]!=null;b++){charbridge3[]=bridge[b].toCharArray();//初始化目的地址//比较目的地址是否在转换表bridge中if(k[1]==bridge3[0]){flag2=0;//目的地7、址存在转换表标志//判断源地址是否与目的地址相同,相同不转发if(bridge2[1]==bridge3[1]){System.out.println(s1[i]+"不转发");break;//跳出第一个for循环}else{if(bridge2[1]=='1'){System.out.println(s1[i]+"由接口2转发");break;}else{System.out.println(s1[i]+"由接口1转发");break;}}}else{flag2=1;//目的地址不存在转换表标志}}if(flag28、==1){flag2=0;if(bridge2[1]=='1'){System.out.println(s1[i]+"由接口2转发");//源地址与目的地址不相同,转发break;}else{System.out.println(s1[i]+"由接口1转发");//源地址与目的地址不相同,转发break;}}}..}StringBufferst
5、2[p];p++;}}Stringbridge[]=newString[100];//建立网桥,数组可以存储100个地址bridge[0]=newString("as");//首先建立第一任意的地址形式,以便以后调用复制intm=0;intflag2=0;//循环调用字符串数组s1的地址for(inti=0;s1[i]!=null;i++){chark[]=s1[i].toCharArray();//将字符串s1[i]转换为字符,以便调用源地址和目的地址//循环调用网桥数组中的地址,判断源地址是否在网桥转发表中for
6、(intj=0;bridge[j]!=null;j++){charbridge2[]=bridge[j].toCharArray();//初始化源地址..if(k[0]==bridge2[0])//检查第一个发送地址是否在网桥的转换表上{flag2=0;for(intb=0;bridge[b]!=null;b++){charbridge3[]=bridge[b].toCharArray();//初始化目的地址//比较目的地址是否在转换表bridge中if(k[1]==bridge3[0]){flag2=0;//目的地
7、址存在转换表标志//判断源地址是否与目的地址相同,相同不转发if(bridge2[1]==bridge3[1]){System.out.println(s1[i]+"不转发");break;//跳出第一个for循环}else{if(bridge2[1]=='1'){System.out.println(s1[i]+"由接口2转发");break;}else{System.out.println(s1[i]+"由接口1转发");break;}}}else{flag2=1;//目的地址不存在转换表标志}}if(flag2
8、==1){flag2=0;if(bridge2[1]=='1'){System.out.println(s1[i]+"由接口2转发");//源地址与目的地址不相同,转发break;}else{System.out.println(s1[i]+"由接口1转发");//源地址与目的地址不相同,转发break;}}}..}StringBufferst
此文档下载收益归作者所有