当前位置:首页 > 基于DV算法的路由器模拟设计与实现 - 图文
华北计算机系统工程研究所—若@只如初见
firstLine = new JPanel(); secondLine = new JPanel(); centerArea = new JPanel(); centerAreaLeft = new JPanel(); centerAreaRight = new JPanel();
centerAreaRightBorderCenter = new JPanel(); firstLine.setLayout(new GridLayout(1, 2)); secondLine.setLayout(new GridLayout(1, 2)); centerArea.setLayout(new GridLayout(1, 2)); centerAreaLeft.setLayout(new BorderLayout()); centerAreaRight.setLayout(new BorderLayout());
centerAreaRightBorderCenter.setLayout(new GridLayout(2,1)); firstLine.add(commandPrompt); firstLine.add(enterField); firstLine.add(submit); secondLine.add(suspended); secondLine.add(selectSuspend);
enterField.setCaretPosition(enterField.getText().length());
showMsgLink = new JLabel(\以下是该路由器路由表信息: \以下showMsgLink.setOpaque(true);
路由显示转发的信息:\
showMsgLink.setBackground(Color.pink);
showMsgForward = new JLabel(\以下路由转发和数据转发的信息:\showMsgForward.setOpaque(true);
routerAreaLeft=new JTextArea(); routerAreaRightNorth=new JTextArea(); routerAreaRightSouth=new JTextArea(); routerAreaLeft.setBackground(Color.YELLOW);
showMsgForward.setBackground(Color.pink);
25
华北计算机系统工程研究所—若@只如初见
routerAreaRightNorth.setBackground(Color.GREEN); routerAreaRightSouth.setBackground(Color.WHITE);
JScrollPane scrollPaneLeft=new JScrollPane(routerAreaLeft); JScrollPane JScrollPane
scrollPaneRightNorth=new scrollPaneRightSouth=new
JScrollPane(routerAreaRightNorth); JScrollPane(routerAreaRightSouth);
centerAreaLeft.add(showMsgLink,BorderLayout.NORTH); centerAreaLeft.add(scrollPaneLeft,BorderLayout.CENTER); centerAreaRight.add(showMsgForward,BorderLayout.NORTH); centerAreaRightBorderCenter.add(scrollPaneRightNorth); centerAreaRightBorderCenter.add(scrollPaneRightSouth);
centerAreaRight.add(centerAreaRightBorderCenter,BorderLayout.CENTER);
centerArea.add(centerAreaLeft); centerArea.add(centerAreaRight);
routerFrame.add(firstLine, BorderLayout.NORTH); routerFrame.add(centerArea,BorderLayout.CENTER); routerFrame.add(secondLine, BorderLayout.SOUTH);
routerFrame.setVisible(true);
routerFrame.setBounds(200, 200, 420, 300);
showTable(routerAreaLeft);
receiveSocket = new DatagramSocket(router.getPort()); receiveDataSocket = new DatagramSocket(router.getPort()+10); sendThread=new SendThread(receiveSocket,router); forwardThread=new
ForwardThread(routerAreaLeft,routerAreaRightNorth,routerAreaRightSouth,receiveDataSocket,router);
receiveThread=new
ReceiveThread(routerAreaLeft,routerAreaRightNorth,routerAreaRightSouth,receiveS
26
华北计算机系统工程研究所—若@只如初见
ocket,router);
selectSuspend.addActionListener(new ActionListener(){ });
submit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
String sendMsgTotal=enterField.getText(); int destRouterId=0; byte [] msgBytes=null; try {
String [] sendMsgs=sendMsgTotal.split(\destRouterId=Integer.parseInt(sendMsgs[0]); msgBytes=sendMsgs[1].getBytes();
public void actionPerformed(ActionEvent event){ }
suspendFlag = !suspendFlag; if (suspendFlag) { }
sendThread.suspend(); receiveThread.suspend(); forwardThread.suspend(); sendThread.resume(); receiveThread.resume(); forwardThread.resume(); routerAreaLeft.setText(\showTable(routerAreaLeft);
routerFrame.addWindowListener(new WindowAdapter(){ });
public void windowClosing(WindowEvent e) { }
routerFrame.dispose();
}else{
27
华北计算机系统工程研究所—若@只如初见
式....\ } /**
}
});
}
}
routerAreaRightSouth.setText(\sendData(destRouterId,msgBytes); enterField.setText(\如2003#AAA\routerAreaRightSouth.setText(\
routerAreaRightSouth.append(\请输入正确的数据格
} catch (NumberFormatException e) {
} catch (HeadlessException e) {
e.printStackTrace(); e.printStackTrace(); } catch (SocketException e) {
* 继承Thread函数的run方法,进行开启每个路由器的两个监听线程(转发数据和接收路由表),一个发送线程 */ @Override
public synchronized void run() { } /**
* 展示本路由表信息的方法
* @param routerAreaLeft 要显示的区域是routerAreaLeft左边的区域。 */
public synchronized void showTable(JTextArea routerAreaLeft){
RouterTable routerTable=router.getRouterTable();
String distances=Arrays.toString(routerTable.getDistance()); forwardThread.start(); receiveThread.start(); sendThread.start();
28
共分享92篇相关文档