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

📄 kernel2.java

📁 利用Java Socket写的一段通讯协议
💻 JAVA
字号:
package com.ict.netcom2.kernel;

import com.ict.netcom2.hardware.Card;
import com.ict.netcom2.task.*;

public class Kernel2 {
	
	public ProbeManager2 pm;
	
	private String ip;
	private int taskType = -1;
	private long delay = -1;
	private boolean isRoutine = false; 
	
	public Kernel2() {
		/*
		ProbeManager2 tmp = Serializer.read();
		if (tmp != null) {
			pm = tmp;
		}
		else {
			pm = new ProbeManager2();
		}*/
		pm = new ProbeManager2();
	}
	
	public String register(String cmd) {
		String[] strs = checkCmd(cmd, 4);
		if (strs == null) {
			return null;
		}
		int status = pm.register(strs[1], Integer.parseInt(strs[2]), strs[3]);
		switch (status) {
		case 0:
			return "Register OK.";
		default:
			return "Register error.";	
		}
	}
	
	public String addProbe(String cmd) {
		String[] strs = checkCmd(cmd, 2);
		if (strs == null) {
			return "usage: addprobe [ip]";
		}		
		pm.createProbe(strs[1]);
		return "Probe "+strs[1]+" added.";
	}
	
	public String selectTaskType(String cmd) {
		String[] strs = checkCmd(cmd, 4);
		if (strs == null) {
			return null;
		}
		
		ip = strs[1];
		delay = Long.parseLong(strs[2]);
		isRoutine = (strs[3].equalsIgnoreCase("0"));		
		return "Select task type:\n"
			+"01: Passive Ethernet measure.\n"
			+"03: Http performance measure";
	}
	
	public String inputTaskParam(String type) {
		taskType = Integer.parseInt(type);
		
		switch (taskType) {
		case TaskType.PASSIVE_ETH:
			return "Input passive Ethernet parformance measure param:\n"
				+"fromat: [inCardSlotNum] [outCardSlotNum] [linkId] [updatePeriod] [enterMacAddredd]\n"
				+"example: 1 1 2 10 0:1:2:3:4:5";
				
		case TaskType.HTTP_PERF:
			return "Input Http parformance measure param:\n"
				+"fromat: [testTimes] [port] [interval] [prototype] [url]\n"
				+"example: 2 80 10 2 www.baidu.com";
		default:
			return null;
		}
	}
	
	public String addTask(String param) {
		String[] strs;
		int id;
		switch (taskType) {
		case TaskType.PASSIVE_ETH:
			strs = checkCmd(param, 5);
			if (strs == null){
				return null;
			}
			PasvEthTaskParam petParam = new PasvEthTaskParam(
					new Card(Integer.parseInt(strs[0]), 0),
					new Card(Integer.parseInt(strs[1]), 0),
					Integer.parseInt(strs[2]),
					Integer.parseInt(strs[3]),strs[4]);
			id = pm.addTask(ip, delay, isRoutine, petParam)[0];
			return "Task "+id+" added.";
			
		case TaskType.HTTP_PERF:
			strs = checkCmd(param, 5);
			if (strs == null) {
				return null;
			}			
			HttpPerfTaskParam httpParam = new HttpPerfTaskParam(
					Long.parseLong(strs[0]), Integer.parseInt(strs[1]),
					Integer.parseInt(strs[2]), Integer.parseInt(strs[3]),
					strs[4]);
			id = pm.addTask(ip, delay, isRoutine, httpParam)[0];
			return "Task "+id+" added.";
			
		default:
			return null;
		}
	}

	public String stopTask(String cmd) {
		String[] strs = checkCmd(cmd, 3);
		if (strs == null) {
			return null;
		}
		int[] ret = pm.stopTask(strs[1], Integer.parseInt(strs[2]));
		if (ret[1] == 0) {
			return "Task "+ret[0]+" stopped.";
		}
		else if (ret[1] == 1){
			return "Task "+ret[0]+" do not exist.";
		}
		else {
			return "Error.";
		}
	}

	public String queryTask(String cmd) {
		String[] strs = checkCmd(cmd, 2);
		if (strs == null) {
			return null;
		}
		String ret = pm.queryTask(strs[1]);
		return ret;
	}
		
	public String queryThread(String cmd) {
		String[] strs = checkCmd(cmd, 2);
		if (strs == null) {
			return null;
		}
		return pm.queryThreads(strs[1]);
	}
	
	public String querySysInfo(String cmd) {
		String[] strs = checkCmd(cmd, 2);
		if (strs == null) {
			return null;
		}
		return pm.querySysInfo(strs[1]);
	}
	
	public String getResult(String cmd) {
		String[] strs = checkCmd(cmd, 3);
		if (strs == null) {
			return null;
		}
		return pm.getResult(strs[1], Integer.parseInt(strs[2]));
	}
	
	private String[] checkCmd(String cmd, int i) {
		String[] strs = cmd.split(" ");
		if (strs.length >= i) {
			return strs;
		}
		return null;
	}
}

⌨️ 快捷键说明

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