一、实验内容
模拟实现网桥的转发功能,以从文件中读取帧模拟网桥从网络中收到一帧,即从两个文件中读入一系列帧,从第一个文件中读入一帧然后从第二个文件中再读入一帧,如此下去。对每一帧,显示网桥是否会转发。
要求:
Windows或Linux环境下运行,程序应在单机上运行。
分析:
用程序模拟网桥功能,可以假定用两个文件分别代表两个网段上的网络帧数据。而两个文件中的数据应具有帧的特征,即有目的地址,源地址和帧内数据。程序交替读入帧的数据,就相当于网桥从网段中得到帧数据,当然如果模拟的数据量比较少,也可以用两个数组代替两个文件存放帧数据,同样达到代表两个网段上的帧数据的效果。对于网桥来说,能否转发帧在于把接收到的帧与网桥中的转发表相比较。判断目的地址后才决定是否转发。由此可见转发的关键在于构造转发表。这里转发表可通过动态生成。
二、程序流程图
三、参考代码
package bridge;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Scanner;
public class Bridge {
@SuppressWarnings("unused")
public static void main(String[] args) {
try(FileReader f1 = new FileReader("f1.txt");
BufferedReader br1 = new BufferedReader(f1);
FileReader f2 = new FileReader("f2.txt");
BufferedReader br2 = new BufferedReader(f2)) {
Bridge bridge = new Bridge();
Frame frame = bridge.new Frame();
while(br1 != null || br2 != null) {
if(br1 != null ) {
frame.dstmac = br1.readLine();
frame.srcmac = br1.readLine();