⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 netlink.java

📁 一个java编写的拓扑自动发现程序
💻 JAVA
字号:
package com.sitech.net.topo.netobj;

import java.util.List;

import sitech.www.frame.jdbc.SqlInsert;
import sitech.www.frame.jdbc.SqlQuery;

import com.sitech.net.topo.util.RandomGUID;

public class NetLink {

	public void saveToDB(String nodeid, String ip) {

		String sql = "select discover_nodeid from tb_topo_node_info where node_id='"
				+ nodeid + "'";
		List list = SqlQuery.findList(sql);
		String[] item = (String[]) list.get(0);
		String discover_nodeid = item[0];
		sql = "select * from tb_topo_node_info where discover_nodeid='"
				+ discover_nodeid + "' and info_proc_flag='0'";
		List list1 = SqlQuery.findList(sql);
		// 发现节点下的子节点基本信息已经处理完
		if ((!(list1.size() > 0)) && existNode(discover_nodeid)) {
			System.out.println("[处理 NodeID: " + discover_nodeid + " 链路信息]");
			// 处理发现节点的链路信息
			List linkList = SqlQuery
					.findList("select node_id from tb_topo_node_info where discover_nodeid='"
							+ discover_nodeid + "' and connect_type='4'");
			for (int i = 0; i < linkList.size(); i++) {
				String[] linkItem = (String[]) linkList.get(i);
				String peerNode = linkItem[0];
				String sameSubNet = this.subNetSame(discover_nodeid, peerNode);
				if (sameSubNet != null) {
					// 子网相同,生成链路
					this.createNetLink(discover_nodeid, peerNode, sameSubNet);
				}
			}
			System.out.println("[NodeID: " + discover_nodeid + " 链路信息处理完毕]");
		}
	}

	private void createNetLink(String nodeid1, String nodeid2, String subNet) {
		RandomGUID linkGUID = new RandomGUID();
		String linkID = linkGUID.toString();

		String ifIndex1 = "";
		String ipaddr1 = "";
		String ifIndex2 = "";
		String ipaddr2 = "";
		String ifdesc1 = "";
		String ifphyaddr1 = "";
		String ifdesc2 = "";
		String ifphyaddr2 = "";

		String sql1 = "select subnetid,nexthop from tb_topo_subnet where nodeid = '"
				+ nodeid1 + "' and subnetaddr='" + subNet + "'";
		List list1 = SqlQuery.findList(sql1);
		for (int i = 0; i < list1.size(); i++) {
			String[] item1 = (String[]) list1.get(i);
			ifIndex1 = item1[0];
			ipaddr1 = item1[1];
		}

		String sql2 = "select subnetid,nexthop from tb_topo_subnet where nodeid = '"
				+ nodeid2 + "' and subnetaddr='" + subNet + "'";
		List list2 = SqlQuery.findList(sql2);
		for (int i = 0; i < list2.size(); i++) {
			String[] item2 = (String[]) list2.get(i);
			ifIndex2 = item2[0];
			ipaddr2 = item2[1];
		}

		String sql11 = "select ifdesc,ifphyaddr from tb_topo_iftable where nodeid='"
				+ nodeid1 + "' and ifindex='" + ifIndex1 + "'";
		List list11 = SqlQuery.findList(sql11);
		for (int i = 0; i < list11.size(); i++) {
			String[] item11 = (String[]) list11.get(i);
			ifdesc1 = item11[0];
			ifphyaddr1 = item11[1];
		}

		String sql22 = "select ifdesc,ifphyaddr from tb_topo_iftable where nodeid='"
				+ nodeid2 + "' and ifindex='" + ifIndex2 + "'";
		List list22 = SqlQuery.findList(sql22);
		for (int i = 0; i < list22.size(); i++) {
			String[] item22 = (String[]) list22.get(i);
			ifdesc2 = item22[0];
			ifphyaddr2 = item22[1];
		}

		System.out.println("[新生成链路 LinkID: " + linkID + " | " + nodeid1
				+ " =>> " + nodeid2 + " | " + ipaddr1 + " =>> " + ipaddr2
				+ " | SubNet: " + subNet + "]");
		String sql_insert = "insert into tb_topo_net_link (linkid,nodeid1,ifindex1,ifdesc1,ipaddr1,macaddr1,nodeid2,ifindex2,ifdesc2,ipaddr2,macaddr2) values ('"
				+ linkID
				+ "','"
				+ nodeid1
				+ "','"
				+ ifIndex1
				+ "','"
				+ ifdesc1
				+ "','"
				+ ipaddr1
				+ "','"
				+ ifphyaddr1
				+ "','"
				+ nodeid2
				+ "','"
				+ ifIndex2
				+ "','"
				+ ifdesc2
				+ "','"
				+ ipaddr2
				+ "','"
				+ ifphyaddr2 + "')";
		SqlInsert.insert(sql_insert);
	}

	private String subNetSame(String nodeid1, String nodeid2) {
		String result = null;
		String sql = "select subnetaddr from tb_topo_subnet where nodeid = '"
				+ nodeid1
				+ "' and subnetaddr in (select subnetaddr from tb_topo_subnet where nodeid = '"
				+ nodeid2 + "')";
		List list = SqlQuery.findList(sql);
		for (int i = 0; i < list.size(); i++) {
			String[] item = (String[]) list.get(i);
			result = item[0];
		}
		return result;
	}

	private boolean existNode(String nodeid) {
		boolean result = false;
		List list = SqlQuery
				.findList("select * from tb_topo_node_info where node_id='"
						+ nodeid + "'");
		if (list.size() > 0) {
			result = true;
		}
		return result;
	}

	public static void main(String args[]) {
		NetLink netLink = new NetLink();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -