?? 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(
"結(jié)點"+n.getName()+"開始發(fā)送路由信息\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()+
"發(fā)送路由表信息\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()+
"對于網(wǎng)絡(luò)"+p2.getNetName()+",下一跳字段相同直接替換\n");
p2.setStep(p1.getStep()+1);
added=true;
}
else if(p2.getStep()>p1.getStep()+1){
this.setText(this.getText()+
"對于網(wǎng)絡(luò)"+p2.getNetName()+",收到的項目中的距離小于路由表中的,進(jìn)行更新\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()+"項目的目的網(wǎng)絡(luò)不在路由表中,將該項目添加到路由表中\(zhòng)n");
n2.addPacket(new Packet(p1.getNetName(),p1.getStep()+1,n1.getName()));
}
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -