📄 display.java
字号:
package network;
import java.util.ArrayList;
import javax.swing.JTextArea;
public class Display extends JTextArea implements Runnable{
private Thread t=null;
private GraphPanel graph;
private ArrayList nodes;
public Display(GraphPanel g){
super();
graph=g;
nodes=g.getNodes();
t=new Thread(this);
t.start();
}
public void run(){
int i=0;
while(true){
try{
if(i<nodes.size()){
Node n=(Node)nodes.get(i);
this.setText(
"结点"+n.getName()+"开始发送路由信息\n");
ArrayList ls=n.getLinks();
for(int j=0;j<ls.size();j++){
Link l=(Link)ls.get(j);
NetNode net=l.getNetNode();
if(net.getStatus()==NetNode.distroy){
n.destroy(net.getNetName());
continue;
}
ArrayList netLinks=net.getLinks();
for(int k=0;k<netLinks.size();k++){
Link nl=(Link)netLinks.get(k);
if(!nl.equals(l)){
Node n2=nl.getN2();
this.setText(this.getText() +
"由路由"+n.getName()+"向路由"+n2.getName()+
"发送路由表信息\n" +
"更新前"+n2.getName()+"的路由信息为\n"+n2.toString()+"\n");
sendTo(n,n2);
this.setText(this.getText()+
"更新后的路由表信息为\n"+n2.toString()+"\n");
}
}
}
}
i++;
if(i>=nodes.size()){
i=0;
}
t.sleep(5000);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
private void sendTo(Node n1,Node n2){
ArrayList ps=n1.getTable();
ArrayList ps2=n2.getTable();
for(int i=0;i<ps.size();i++){
boolean added=false;
Packet p1=(Packet)ps.get(i);
for(int j=0;j<ps2.size();j++){
Packet p2=(Packet)ps2.get(j);
if(p2.getNetName().equals(p1.getNetName())){
if(p2.getNextR().equals(n1.getName())){
this.setText(this.getText()+
"对于网络"+p2.getNetName()+",下一跳字段相同直接替换\n");
p2.setStep(p1.getStep()+1);
added=true;
}
else if(p2.getStep()>p1.getStep()+1){
this.setText(this.getText()+
"对于网络"+p2.getNetName()+",收到的项目中的距离小于路由表中的,进行更新\n");
p2.setNextR(n1.getName());
p2.setStep(p1.getStep()+1);
added=true;
}
else if(p2.getStep()<p1.getStep()+1){
added=true;
}
}
}
if(!added){
this.setText(this.getText()+"项目的目的网络不在路由表中,将该项目添加到路由表中\n");
n2.addPacket(new Packet(p1.getNetName(),p1.getStep()+1,n1.getName()));
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -