亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gatewaymonitor.java

?? java網關監控實例,解釋了線程的應用方法
?? JAVA
字號:
package com.cxt.platform.gateway;import java.io.*;import java.net.*;import java.util.*;import	java.sql.Time;/** * Title: * Description: *		網關的監控,用于接受請求,返回相應的數據;如:線程監控、參數設定等 * Copyright:    Copyright (c) 2001 * Company: * @author * @version 1.0 */public class GatewayMonitor extends Thread{	private int 	m_port;		private boolean	m_run;	private GatewayThreadGroup	m_gwthreadgroup;	private	Gateway m_gateway;	final int BUFFER_SIZE=10240;	final int START=10;	final int STOP=20;	final int GET=30;	final int SET=40;	private	byte[] m_outbuf=new byte[BUFFER_SIZE];	private byte[] m_inbuf=new byte[BUFFER_SIZE];		public GatewayMonitor(GatewayThreadGroup tg,int port,Gateway gw)	{		m_port=port;		m_run=true;		m_gwthreadgroup=tg;		m_gateway=gw;	}	//線程方法,子線程的入口	public void run()	{		ServerSocket serv=null;				try		{			serv=new ServerSocket(m_port);		}		catch (Exception e)		{			System.err.println("Can't make monitor server!");			e.printStackTrace();			System.exit(10);		}		 		while(m_run)		{			Socket client=null;			OutputStream clientSend=null;			InputStream	clientReceive=null;			int	out_len=0;			int	pos=0;			int	outpos=4;	//預留報文長度的兩個字節和返回值的兩個字節,共四個			int iRetval=0;			int	ret=0;			int	len=0;						try			{				client=serv.accept();			}			catch (Exception e)			{				System.err.println("Error when accept");				e.printStackTrace();				continue;			}						try 			{				clientSend = client.getOutputStream();				clientReceive = client.getInputStream();							//設定超時時間為5秒(5000毫秒)				client.setSoTimeout(5000);								//取整個報文的頭兩個字節,以便得到報文的長度				ret=clientReceive.read(m_inbuf,0,2);				if( ret<2 )	//取報文頭兩個字節失敗!				{					System.err.println("Error when read length");					throw new Exception("讀報文出錯!return code="+ret);				}				pos+=ret;				//根據頭兩個字節,計算長度				len=bytes2short(m_inbuf,0);				if( len>BUFFER_SIZE-pos )	//長度超過了緩沖區的大小				{					System.err.println("Error that length exceed buffer size");					throw new Exception("數據報文太長,超過緩沖區大小!length="+len);				}				//接收指定長度的數據				ret=clientReceive.read(m_inbuf,pos,len);				if( ret<len )				{					System.err.println("Error that length exceed buffer size");					throw new Exception("讀不到足夠的數據,請查看報文!length="+ret);				}								switch(m_inbuf[pos])				//命令域的第一個字節代表命令類別				{					case	START:					//啟動					{						switch(m_inbuf[pos+1])		//命令域的第二個字節代表具體命令						{							case	1:				//起動網關								m_run=true;								break;							default	:				//無效的啟動命令								break;						}						break;					}					case	STOP:					//停止					{						switch(m_inbuf[pos+1])							{							case	1:				//停止網關								m_run=false;								m_gateway.stop();								//冒充client向網關發起連接,以解除網關ServerSocket.accept方法的堵塞								/*try								{									Socket clientCheat = new Socket("localhost",m_gateway.getServerPort());									//下列用法JDK1.4以上才支持									//Socket clientCheat = new Socket();									//clientCheat.connect(new InetSocketAddress("localhost",m_gateway.getServerPort()),5000);									//									clientCheat.close();								}								catch (Exception excp)								{									//無需處理								}*/								//								break;							default	:				//無效的停止命令								break;						}						break;					}					case	GET:					//查詢					{						switch(m_inbuf[pos+1])						{							case	1:		//線程監控																GatewayHandler[] thread_list=new GatewayHandler[m_gwthreadgroup.activeCount()];								ret=m_gwthreadgroup.enumerate(thread_list);								outpos+=addThreadHeader(outpos);								for( int i=0;i<ret;i++ )								{									outpos+=addThreadList(thread_list[i],outpos);								}																	break;							default	:		//無效的查詢命令								break;						}						break;					}					case	SET:			//設定					{						switch(m_inbuf[pos+1])						{							case	1:		//日志級別								len=bytes2short(m_inbuf,pos+2);								int logLevel=byteChar2Int(m_inbuf,pos+4,len);								m_gateway.setLogLevel(logLevel);								break;							case	2:		//重新裝載配置文件								break;							default	:		//無效的設置命令								break;						}						break;					}					default	:				//無效的命令類型						break;				}								short2bytes(m_outbuf,2,iRetval);	//返回值				short2bytes(m_outbuf,0,outpos-2);	//返回報文的總長度				clientSend.write(m_outbuf,0,outpos);				clientSend.close();				clientReceive.close();				client.close();			}			catch (Exception e)			{				System.err.println("Error :"+e.toString());				e.printStackTrace();				try				{					clientSend.close();					clientReceive.close();					client.close();				}				catch (Exception e1)				{					e1.printStackTrace();					System.err.println("Error when close socket,so how should i do???!!!");				}				continue;			}		}// end while				try		{			serv.close();		}		catch (Exception e)		{			System.err.println("Error when close socket server,so how should i do???!!!");			e.printStackTrace();		}		   	}//end of run		//從byte數組中的指定偏移取出相應的整形數據,高位在前,兩個字節	private int bytes2short(byte[] src,int pos)		{		int	sh;		sh=src[pos]<0 ? (256+src[pos])*256 : src[pos]*256;		sh+=src[pos+1]<0 ? 256+src[pos+1] : src[pos+1];				return	sh;	}		//將整形數據存儲到指定的byte數組的指定偏移,高位在前,兩個字節	private void short2bytes(byte[] src,int pos,int value)		{		src[pos]=(byte)(value/256);		src[pos+1]=(byte)(value%256);	}		//將字符串型byte數組轉成整形	private int byteChar2Int(byte[] src,int pos,int len)	{		Integer i=new Integer(new String(src,pos,len));		return i.intValue();	}		private int addThreadHeader(int	offset)	{		int	pos=0;		byte[] byteArray;		///////////////////////////////////網關的靜態屬性		//從網關中取出網關ID,并打到輸出緩沖區;		byteArray=m_gateway.getGatewayNO().getBytes();		short2bytes(m_outbuf,offset+pos,byteArray.length);		pos+=2;		System.arraycopy(byteArray,0,m_outbuf,offset+pos,byteArray.length);		pos+=byteArray.length;		//從網關中取出網關名,并打到輸出緩沖區;		byteArray=m_gateway.getGatewayName().getBytes();		short2bytes(m_outbuf,offset+pos,byteArray.length);		pos+=2;		System.arraycopy(byteArray,0,m_outbuf,offset+pos,byteArray.length);		pos+=byteArray.length;		//從網關中取出網關狀態,并打到輸出緩沖區;		byteArray=String.valueOf(m_gateway.getGatewayStatus()).getBytes();		short2bytes(m_outbuf,offset+pos,byteArray.length);		pos+=2;		System.arraycopy(byteArray,0,m_outbuf,offset+pos,byteArray.length);		pos+=byteArray.length;		//從網關中取出網關接入服務類名,并打到輸出緩沖區;		byteArray=m_gateway.getReceiveServiceClassName().getBytes();		short2bytes(m_outbuf,offset+pos,byteArray.length);		pos+=2;		System.arraycopy(byteArray,0,m_outbuf,offset+pos,byteArray.length);		pos+=byteArray.length;		//從網關中取出網關監聽端口,并打到輸出緩沖區;		byteArray=String.valueOf(m_gateway.getServerPort()).getBytes();		short2bytes(m_outbuf,offset+pos,byteArray.length);		pos+=2;		System.arraycopy(byteArray,0,m_outbuf,offset+pos,byteArray.length);		pos+=byteArray.length;		//從網關中取出網關最大允許連接數,并打到輸出緩沖區;		byteArray=String.valueOf(m_gateway.getMaxClientCount()).getBytes();		short2bytes(m_outbuf,offset+pos,byteArray.length);		pos+=2;		System.arraycopy(byteArray,0,m_outbuf,offset+pos,byteArray.length);		pos+=byteArray.length;		//從網關中取出網關最大線程數,并打到輸出緩沖區;		byteArray=String.valueOf(m_gateway.getMaxThreadCount()).getBytes();		short2bytes(m_outbuf,offset+pos,byteArray.length);		pos+=2;		System.arraycopy(byteArray,0,m_outbuf,offset+pos,byteArray.length);		pos+=byteArray.length;		//從網關中取出網關日志級別,并打到輸出緩沖區;		byteArray=String.valueOf(m_gateway.getLogLevel()).getBytes();		short2bytes(m_outbuf,offset+pos,byteArray.length);		pos+=2;		System.arraycopy(byteArray,0,m_outbuf,offset+pos,byteArray.length);		pos+=byteArray.length;		//從網關中取出網關的起動時間,并打到輸出緩沖區;		byteArray=String.valueOf(new Time(m_gateway.getStartTime())).getBytes();		short2bytes(m_outbuf,offset+pos,byteArray.length);		pos+=2;		System.arraycopy(byteArray,0,m_outbuf,offset+pos,byteArray.length);		pos+=byteArray.length;		/////////////////////////////////////////////////////網關線程的動態屬性				//從線程組中取出接入的交易數,并打到輸出緩沖區;		byteArray=String.valueOf(m_gwthreadgroup.getEntries()).getBytes();		short2bytes(m_outbuf,offset+pos,byteArray.length);		pos+=2;		System.arraycopy(byteArray,0,m_outbuf,offset+pos,byteArray.length);		pos+=byteArray.length;		//從線程組中取出總服務的交易數,并打到輸出緩沖區;		byteArray=String.valueOf(m_gwthreadgroup.getTotal()).getBytes();		short2bytes(m_outbuf,offset+pos,byteArray.length);		pos+=2;		System.arraycopy(byteArray,0,m_outbuf,offset+pos,byteArray.length);		pos+=byteArray.length;		//從線程組中取出成功的交易數,并打到輸出緩沖區;		byteArray=String.valueOf(m_gwthreadgroup.getSuccess()).getBytes();		short2bytes(m_outbuf,offset+pos,byteArray.length);		pos+=2;		System.arraycopy(byteArray,0,m_outbuf,offset+pos,byteArray.length);		pos+=byteArray.length;		//從線程組中取出失敗的交易數,并打到輸出緩沖區;		byteArray=String.valueOf(m_gwthreadgroup.getFail()).getBytes();		short2bytes(m_outbuf,offset+pos,byteArray.length);		pos+=2;		System.arraycopy(byteArray,0,m_outbuf,offset+pos,byteArray.length);		pos+=byteArray.length;		//從線程組中取出當前正活動的線程數,并打到輸出緩沖區;		byteArray=String.valueOf(m_gwthreadgroup.activeCount()).getBytes();		short2bytes(m_outbuf,offset+pos,byteArray.length);		pos+=2;		System.arraycopy(byteArray,0,m_outbuf,offset+pos,byteArray.length);		pos+=byteArray.length;		/**********************************************		/////////////////////////////////////////////////////////		for(int i=0;i<pos;i++)		{			System.out.print(m_outbuf[offset+i]+" ");		}		System.out.println();		/////////////////////////////////////////////////////////		**********************************************/		return	pos;	}		private int addThreadList(GatewayHandler thread_list,int offset)	{		int	pos=0;		byte[] byteArray;				//System.out.println("here:"+offset);		//從線程對象中取出線程的名字,并打到輸出緩沖區;		byteArray=thread_list.getName().getBytes();		short2bytes(m_outbuf,offset+pos,byteArray.length);		pos+=2;		System.arraycopy(byteArray,0,m_outbuf,offset+pos,byteArray.length);		pos+=byteArray.length;		//從線程對象中取出線程正服務的交易碼,并打到輸出緩沖區;		short2bytes(m_outbuf,offset+pos,thread_list.getTrcd().length);		pos+=2;		System.arraycopy(thread_list.getTrcd(),0,m_outbuf,offset+pos,thread_list.getTrcd().length);		pos+=thread_list.getTrcd().length;		//從線程對象中取出線程正服務的交易的狀態,并打到輸出緩沖區;		byteArray=String.valueOf(thread_list.getStatus()).getBytes();		short2bytes(m_outbuf,offset+pos,byteArray.length);		pos+=2;		System.arraycopy(byteArray,0,m_outbuf,offset+pos,byteArray.length);		pos+=byteArray.length;				//從線程對象中取出線程正服務的交易的起始時間,并打到輸出緩沖區;				byteArray=String.valueOf(new Time(thread_list.getStartTm())).getBytes();		short2bytes(m_outbuf,offset+pos,byteArray.length);		pos+=2;		System.arraycopy(byteArray,0,m_outbuf,offset+pos,byteArray.length);		pos+=byteArray.length;		//從線程對象中取出線程正服務的交易的服務時間,并打到輸出緩沖區;				byteArray=String.valueOf(System.currentTimeMillis()-thread_list.getStartTm()).getBytes();		short2bytes(m_outbuf,offset+pos,byteArray.length);		pos+=2;		System.arraycopy(byteArray,0,m_outbuf,offset+pos,byteArray.length);		pos+=byteArray.length;				/**********************************************		/////////////////////////////////////////////////////////		for(int i=0;i<pos;i++)		{			System.out.print(m_outbuf[offset+i]+" ");		}		System.out.println();		/////////////////////////////////////////////////////////		**********************************************/				return	pos;	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品久久精品| 久久五月婷婷丁香社区| 666欧美在线视频| 中文字幕av资源一区| 天天综合网 天天综合色| 97成人超碰视| 久久久久久久久久久久电影| 亚洲一区二区三区三| 成人午夜电影久久影院| 欧美刺激脚交jootjob| 日韩精品电影一区亚洲| 91激情在线视频| 自拍av一区二区三区| 国产在线播放一区三区四| 6080亚洲精品一区二区| 一区二区成人在线观看| av动漫一区二区| 久久久精品tv| 韩国成人福利片在线播放| 91精品国产色综合久久ai换脸 | 亚洲欧洲www| 国产老肥熟一区二区三区| 欧美一级二级三级蜜桃| 亚洲电影一区二区三区| 欧美性猛片xxxx免费看久爱| 一区av在线播放| 色婷婷av一区二区三区gif| 国产精品福利影院| 国产91对白在线观看九色| 久久久精品tv| 成人久久18免费网站麻豆| 亚洲国产精品ⅴa在线观看| 极品少妇xxxx精品少妇偷拍| 精品日韩一区二区三区| 蜜乳av一区二区三区| 日韩欧美色电影| 久久精品国产成人一区二区三区 | 国产精品二三区| 成人av资源网站| 亚洲免费av观看| 欧美日韩视频在线第一区| 午夜精品免费在线| 日韩欧美电影一二三| 韩国av一区二区三区在线观看| 久久综合狠狠综合| 成人黄色免费短视频| 亚洲乱码国产乱码精品精可以看 | 色香蕉久久蜜桃| 亚洲一线二线三线视频| 91精品综合久久久久久| 久久99国产精品久久99果冻传媒| 久久久精品免费免费| 97超碰欧美中文字幕| 国产福利一区在线观看| 亚洲国产精品精华液ab| 色综合天天综合色综合av| 午夜精品免费在线观看| 久久久91精品国产一区二区精品| 成人av中文字幕| 亚洲国产综合色| 精品国精品自拍自在线| k8久久久一区二区三区| 午夜精彩视频在线观看不卡| 日韩精品一区国产麻豆| 99热在这里有精品免费| 日本欧美一区二区三区| 国产欧美一区二区精品性色| 色偷偷88欧美精品久久久 | 国产精品久久久久天堂| 欧美精品aⅴ在线视频| 成人激情黄色小说| 奇米色777欧美一区二区| 亚洲国产电影在线观看| 欧美一区二区福利在线| av一区二区久久| 蜜臀av性久久久久蜜臀av麻豆| 中文字幕电影一区| 欧美一区二区精品在线| 欧美性猛片aaaaaaa做受| 国产成人精品综合在线观看| 奇米影视7777精品一区二区| 亚洲乱码国产乱码精品精98午夜| 久久人人爽人人爽| 欧美日本韩国一区二区三区视频| 成人精品一区二区三区四区 | 日韩一区二区在线观看视频播放| 成人免费高清在线| 精品一区二区日韩| 五月天欧美精品| 一区二区三区资源| 中文一区一区三区高中清不卡| 日韩女优电影在线观看| 91国偷自产一区二区开放时间| 国产在线一区二区| 美洲天堂一区二卡三卡四卡视频| 亚洲国产aⅴ天堂久久| 亚洲女与黑人做爰| 日本一区二区在线不卡| 26uuu久久综合| 日韩三级高清在线| 在线播放91灌醉迷j高跟美女 | 在线观看日韩精品| 国产精品一二二区| 国内精品久久久久影院薰衣草 | 亚洲午夜免费福利视频| 亚洲精品成人少妇| 亚洲人成精品久久久久| 中文字幕制服丝袜一区二区三区| 国产欧美一区二区三区网站| 国产欧美精品区一区二区三区| 久久亚洲精品小早川怜子| 精品福利一二区| 日韩欧美不卡一区| 精品乱人伦小说| 久久综合狠狠综合久久激情| 精品久久国产老人久久综合| 欧美电影免费观看高清完整版在线观看| 69堂成人精品免费视频| 日韩欧美国产精品| 日韩三级在线观看| 久久伊99综合婷婷久久伊| 国产网站一区二区| 香蕉影视欧美成人| 男人操女人的视频在线观看欧美| 日韩国产欧美视频| 美国十次了思思久久精品导航| 久久电影网站中文字幕| 国产成人自拍网| av网站一区二区三区| 91高清视频在线| 91精品欧美久久久久久动漫 | 欧美亚洲综合久久| 3d动漫精品啪啪| 久久久久久免费毛片精品| 中文字幕第一区第二区| 亚洲美女一区二区三区| 亚洲va天堂va国产va久| 韩国v欧美v日本v亚洲v| 91在线无精精品入口| 欧美日韩国产一级二级| 欧美成人一区二区| 亚洲欧美日韩国产成人精品影院| 午夜电影一区二区| 国产乱人伦偷精品视频不卡 | 一本色道亚洲精品aⅴ| 在线不卡的av| 久久亚洲精华国产精华液| 亚洲精品国产高清久久伦理二区| 日本中文字幕一区二区视频| 成人一级黄色片| 欧美色综合影院| 国产日韩精品视频一区| 夜夜夜精品看看| 国产麻豆一精品一av一免费| 欧美伊人久久大香线蕉综合69| 精品免费日韩av| 亚洲欧美韩国综合色| 韩国成人精品a∨在线观看| 欧美亚洲日本国产| 国产视频一区在线观看| 伊人婷婷欧美激情| 国产在线精品一区二区夜色| 在线影视一区二区三区| 久久精品一区二区三区不卡 | av一本久道久久综合久久鬼色| 欧美色男人天堂| 国产精品污www在线观看| 美腿丝袜在线亚洲一区| 欧美色综合影院| 亚洲欧洲三级电影| 黄色日韩三级电影| 欧美嫩在线观看| 亚洲精品成人a在线观看| 成人性生交大片| 欧美精品一区二区三区四区 | 欧美不卡123| 婷婷国产在线综合| 欧美综合一区二区| 中文字幕一区在线| 国产不卡视频在线观看| 欧美大片一区二区三区| 日韩二区三区四区| 色94色欧美sute亚洲线路二| 亚洲欧洲精品天堂一级| 成人一级片网址| 亚洲国产精品高清| 盗摄精品av一区二区三区| 精品国产凹凸成av人导航| 日本欧美韩国一区三区| 欧美三级日韩三级| 亚洲国产成人av网| 在线观看日韩电影| 亚洲一级不卡视频| 在线观看视频欧美| 亚洲美女在线一区| 一本大道久久a久久综合婷婷| 亚洲人成网站精品片在线观看| 日韩视频免费直播| 美女脱光内衣内裤视频久久影院| 制服丝袜国产精品|