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

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

?? quickserver.java

?? 一個用java編寫的服務器,對于學習網絡編程的人來說是個很好的例子
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:

				processServerHooks(ServerHook.POST_SHUTDOWN);
			}
		}
	} //end of run

	/**
	 * Sets the maximum number of client connection allowed.
	 * @since 1.1
	 * @see #getMaxConnection
	 */
	public void setMaxConnection(long maxConnection) {
		if(getServiceState()==Service.SUSPENDED)
			suspendMaxConnection = maxConnection;
		else
			this.maxConnection = maxConnection;
		logger.finest("Set to "+maxConnection);
	}
	/** 
	 * Returns the maximum number of client connection allowed.
	 * @since 1.1
	 * @see #setMaxConnection
	 */
	public long getMaxConnection() {
		return maxConnection;
	}

	/** 
	 * Returns number of clients connected.
	 * @since 1.1
	 */
	public long getClientCount() {
		if(clientHandlerPool != null) {
			try {
				return getClientHandlerPool().getNumActive();
			} catch(Exception e) {
				return 0;
			}
		}
		return 0;
	}

	/**
	 * Sets the message to be sent to any new client connected after
	 * maximum client connection has reached. 
	 * Default is : <code>-ERR Server Busy. Max Connection Reached</code>
	 * @since 1.1
	 * @see #getMaxConnectionMsg
	 */
	public void setMaxConnectionMsg(String maxConnectionMsg) {
		if(getServiceState() == Service.SUSPENDED)
			suspendMaxConnectionMsg = maxConnectionMsg;
		else
			this.maxConnectionMsg = maxConnectionMsg;
		logger.finest("Set to "+maxConnectionMsg);
	}
	/**
	 * Returns the message to be sent to any new client connected 
	 * after maximum client connection has reached.
	 * @since 1.1
	 * @see #setMaxConnectionMsg
	 */
	public String getMaxConnectionMsg() {
		return maxConnectionMsg;
	}

	/**
	 * Sets the Ip address to bind to. 
	 * @param bindAddr argument can be used on a multi-homed host for a 
	 * QuickServer that will only accept connect requests to one 
	 * of its addresses. If not set, it will default accepting 
	 * connections on any/all local addresses.
	 * @exception java.net.UnknownHostException if no IP address for 
	 * the host could be found
	 * @since 1.1
	 * @see #getBindAddr
	 */
	public void setBindAddr(String bindAddr) 
			throws UnknownHostException {
		ipAddr = InetAddress.getByName(bindAddr);
		logger.finest("Set to "+bindAddr);
	}
	/**
	 * Returns the IP address binding to. 
	 * @since 1.1
	 * @see #setBindAddr
	 */
	public InetAddress getBindAddr() {
		if(ipAddr==null) {
			try	{
				ipAddr = InetAddress.getByName("0.0.0.0");
			} catch(Exception e){
				logger.warning("Unable to create default ip(0.0.0.0) : "+e);
				throw new RuntimeException("Error: Unable to find servers own ip : "+e);
			}			
		}
		return ipAddr;
	}

	/**
	 * Sets the store of objects to QuickServer, it is an array of objects  
	 * that main program or the class that created QuickServer passes to 
	 * the QuickServer. 
	 * @param storeObjects array of objects
	 * @see #getStoreObjects
	 * @since 1.1
	 */
	public void setStoreObjects(Object[] storeObjects) {
		this.storeObjects = storeObjects;
	}

	/**
	 * Returns store of objects from QuickServer, if nothing was set will
	 * return <code>null</code>.
	 * @see #setStoreObjects
	 * @since 1.1
	 */
	public Object[] getStoreObjects() {
		return storeObjects;
	}

	/** 
	 * Set the port to run QSAdminServer on.
	 * @since 1.2
	 */
	public void setQSAdminServerPort(int port) {
		getQSAdminServer().getServer().setPort(port);
	}
	/** 
	 * Returns the port to run QSAdminServer on.
	 * @since 1.2
	 */
	public int getQSAdminServerPort() {
		return getQSAdminServer().getServer().getPort();
	}

	/** 
	 * Set the ClientAuthenticationHandler class of 
	 * QSAdminServer that handles the authentication of a client.
	 * @since 1.2
	 */
	public void setQSAdminServerAuthenticator(String authenticator) {
		getQSAdminServer().getServer().setClientAuthenticationHandler(authenticator);
	}
	/** 
	 * Returns the Authenticator or ClientAuthenticationHandler class of 
	 * QSAdminServer that handles the authentication of a client.
	 * @since 1.2
	 */
	public String getQSAdminServerAuthenticator() {
		return getQSAdminServer().getServer().getAuthenticator();
	}

	/**
	 * Starts QSAdminServer for this QuickServer.
	 * @see org.quickserver.net.qsadmin.QSAdminServer
	 * @param authenticator sets the ClientAuthenticationHandler class that 
	 *   handles the authentication of a client, 
	 *   if null uses {@link org.quickserver.net.qsadmin.Authenticator}.
	 * @param port to run QSAdminServer on
 	 * @exception org.quickserver.net.AppException 
	 *  if Server already running or if it could not load the classes
	 *  [ClientCommandHandler, ClientAuthenticationHandler, ClientData].
	 * @since 1.1
	 */
	public void startQSAdminServer(int port, String authenticator) 
			throws AppException {
		getQSAdminServer().setClientAuthenticationHandler(authenticator);
		getQSAdminServer().startServer(port);
	}
	/**
	 * Starts QSAdminServer for this QuickServer.
	 * @see org.quickserver.net.qsadmin.QSAdminServer
	 * @since 1.2
	 */
	public void startQSAdminServer() throws AppException {
		getQSAdminServer().startServer();
	}

	/**
	 * Returns {@link QSAdminServer} associated with this QuickServer
	 * @since 1.1
	 */
	public QSAdminServer getQSAdminServer() {
		if(adminServer==null)
			adminServer = new QSAdminServer(QuickServer.this);
		return adminServer;
	}

	/**
	 * Sets {@link QSAdminServer} associated with this QuickServer
	 * @since 1.3.3
	 */
	public void setQSAdminServer(QSAdminServer adminServer) {
		if(adminServer==null)
			this.adminServer = adminServer;
	}

	/** 
	 * Returns the closed state of the QuickServer Socket.
	 * @since 1.1
	 */
	public boolean isClosed() {
		if(server==null)
			return true;
		return server.isClosed();
	}

	/** 
	 * Returns the application logger associated with QuickServer.
	 * If it was not set will return QuickServer's own logger.
	 * @since 1.2
	 */
	public Logger getAppLogger() {
		if(appLogger!=null)
			return appLogger;
		return logger;
	}
	/** 
	 * Sets the application logger associated with QuickServer
	 * @since 1.2
	 */
	public void setAppLogger(Logger appLogger) {
		this.appLogger = appLogger;
	}

	/**
     * Sets the ClientObjectHandler class that interacts with 
	 * client sockets to handle java objects.
	 * @param handler object the fully qualified name of the class that 
	 *  implements {@link ClientObjectHandler}
	 * @see #getClientObjectHandler
	 * @since 1.2
     */
	public void setClientObjectHandler(String handler) {
		clientObjectHandlerString = handler;
		logger.finest("Set to "+handler);
	}
	/**
     * Returns the ClientObjectHandler class that interacts with 
	 * client sockets.
	 * @see #setClientObjectHandler
	 * @since 1.2
     */
	public String getClientObjectHandler() {
		return clientObjectHandlerString;
	}

	/**
	 * Sets the console log handler formatter.
	 * @param formatter fully qualified name of the class that implements 
	 * {@link java.util.logging.Formatter}
	 * @since 1.2
	 */
	public void setConsoleLoggingFormatter(String formatter) 
			throws ClassNotFoundException, InstantiationException,
				IllegalAccessException {
		if(formatter==null)
			return;
		consoleLoggingformatter = formatter;

		Formatter conformatter = 
			(Formatter) getClass(formatter, true).newInstance();
		Logger jdkLogger = Logger.getLogger("");
		Handler[] handlers =  jdkLogger.getHandlers();
		for(int index = 0; index < handlers.length; index++ ) {
			if(ConsoleHandler.class.isInstance(handlers[index])) {
				handlers[index].setFormatter(conformatter);
			}
		}
		logger.finest("Set to "+formatter);
	}

	/**
	 * Gets the console log handler formatter.
	 * @since 1.3
	 */
	public String getConsoleLoggingFormatter() {
		return consoleLoggingformatter;
	}

	/**
	 * Sets the console log handler formater to 
	 * {@link org.quickserver.util.logging.MiniFormatter}
	 * @since 1.2
	 */
	public void setConsoleLoggingToMini() {
		try	{
			setConsoleLoggingFormatter("org.quickserver.util.logging.MiniFormatter");
		} catch(Exception e) {
			logger.warning("Setting to logging.MiniFormatter : "+e);
		}
	}

	/**
	 * Sets the console log handler formater to 
	 * {@link org.quickserver.util.logging.MicroFormatter}
	 * @since 1.2
	 */
	public void setConsoleLoggingToMicro() {
		try	{
			setConsoleLoggingFormatter("org.quickserver.util.logging.MicroFormatter");	
		} catch(Exception e) {
			logger.warning("Setting to MicroFormatter : "+e);
		}
	}

	/**
	 * Sets the console log handler level.
	 * @since 1.2
	 */
	public void setConsoleLoggingLevel(Level level) {
		Logger rlogger = Logger.getLogger("");
		Handler[] handlers =  rlogger.getHandlers();
		for(int index = 0; index < handlers.length; index++ ) {
			if(ConsoleHandler.class.isInstance(handlers[index])) {
				handlers[index].setLevel(level);
			}
		}
		if(level==Level.SEVERE)
			consoleLoggingLevel = "SEVERE";
		else if(level==Level.WARNING)
			consoleLoggingLevel = "WARNING";
		else if(level==Level.INFO)
			consoleLoggingLevel = "INFO";
		else if(level==Level.CONFIG)
			consoleLoggingLevel = "CONFIG";
		else if(level==Level.FINE)
			consoleLoggingLevel = "FINE";
		else if(level==Level.FINER)
			consoleLoggingLevel = "FINER";
		else if(level==Level.FINEST)
			consoleLoggingLevel = "FINEST";
		else 
			consoleLoggingLevel = "UNKNOWN";

		logger.fine("Set to "+level);
	}

	/**
	 * Gets the console log handler level.
	 * @since 1.3
	 */
	public String getConsoleLoggingLevel() {
		return consoleLoggingLevel;
	}

	/**
	 * Sets the level for all log handlers.
	 * @since 1.3.1
	 */
	public void setLoggingLevel(Level level) {
		Logger rlogger = Logger.getLogger("");
		Handler[] handlers =  rlogger.getHandlers();
		for(int index = 0; index < handlers.length; index++ ) {
		  handlers[index].setLevel(level);
		}

		if(level==Level.SEVERE)
			loggingLevel = "SEVERE";
		else if(level==Level.WARNING)
			loggingLevel = "WARNING";
		else if(level==Level.INFO)
			loggingLevel = "INFO";
		else if(level==Level.CONFIG)
			loggingLevel = "CONFIG";
		else if(level==Level.FINE)
			loggingLevel = "FINE";
		else if(level==Level.FINER)
			loggingLevel = "FINER";
		else if(level==Level.FINEST)
			loggingLevel = "FINEST";
		else 
			loggingLevel = "UNKNOWN";

		consoleLoggingLevel = loggingLevel;

		logger.fine("Set to "+level);
	}

	//*** Start of Service interface methods
	/**
	 * Returns service error if any.
	 * @since 1.4.7
	 */
	public Throwable getServiceError() {
		return serviceError;
	}

	/**
	 * Initialise and create the service.
	 * @param param of the xml configuration file.
	 * @since 1.2
	 */
	public synchronized boolean initService(Object param[]) {
		serviceError = null;
		try {
			initServer(param);
		} catch(Exception e) {
			serviceError = e;
			return false;
		}
		return true;
	}

	/**
	 * Initialise and create the service.
	 * @param qsConfig QuickServerConfig object.
	 * @since 1.4.6
	 */
	public synchronized boolean initService(QuickServerConfig qsConfig) {
		serviceError = null;
		try {
			initServer(qsConfig);			
		} catch(Exception e) {
			serviceError = e;
			return false;
		}
		return true;
	}
	
	/**
	 * Start the service.
	 * @return true if serivce was stopped from Running state.
	 * @since 1.2
	 */
	public boolean startService() {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精选视频免费看| 日韩视频一区二区三区在线播放| 久久久99精品免费观看| 美腿丝袜亚洲综合| 日韩欧美精品三级| 国产成人一级电影| 国产精品精品国产色婷婷| 99久久伊人精品| 亚洲一卡二卡三卡四卡| 欧美剧情片在线观看| 日韩成人免费在线| 26uuu国产电影一区二区| 国产黄人亚洲片| 亚洲免费电影在线| 日韩欧美在线不卡| 国产宾馆实践打屁股91| 一区二区在线看| 欧美一区二区成人| 丰满白嫩尤物一区二区| 一区二区三区中文字幕| 在线播放亚洲一区| 国产精品一区二区黑丝| 国产精品国产精品国产专区不蜜| 色噜噜偷拍精品综合在线| 一区视频在线播放| 欧美色图天堂网| 国产一区亚洲一区| 亚洲综合色在线| 精品999久久久| 在线欧美日韩精品| 寂寞少妇一区二区三区| 亚洲综合一区在线| 国产色91在线| 欧美美女一区二区在线观看| 国产精品一区三区| 五月婷婷综合网| 国产精品久久网站| 日韩一区二区三区视频在线| 99这里只有精品| 久久se精品一区精品二区| 亚洲精品成人悠悠色影视| 欧美电影精品一区二区| 91免费观看视频在线| 国产一区二区在线观看视频| 午夜免费久久看| 国产精品久久久久久久岛一牛影视 | 日本vs亚洲vs韩国一区三区二区| 久久久久久亚洲综合影院红桃| 在线亚洲精品福利网址导航| 国产精品中文欧美| 日韩精品免费专区| 亚洲日本一区二区| 久久久久亚洲蜜桃| 欧美一区二区视频观看视频| 91成人在线精品| 99久久久国产精品免费蜜臀| 国内精品伊人久久久久av一坑 | 精品系列免费在线观看| 亚洲一区二区三区四区在线免费观看| 国产欧美精品国产国产专区 | 欧美一区二区三区免费观看视频| 99久久精品国产一区二区三区| 国产精品77777| 国产一区二区免费在线| 麻豆精品国产传媒mv男同| 天天综合色天天综合色h| 亚洲综合清纯丝袜自拍| 亚洲激情在线激情| 亚洲视频在线一区观看| 国产精品国产自产拍在线| 久久九九久精品国产免费直播| 日韩一区二区三区四区 | 欧美日韩午夜影院| 在线亚洲一区观看| 91一区二区三区在线观看| 成人教育av在线| 不卡的电视剧免费网站有什么| 狠狠色狠狠色合久久伊人| 韩国成人在线视频| 国产一区二区三区香蕉 | 久久99在线观看| 九色综合狠狠综合久久| 久久99精品久久久久| 九色综合国产一区二区三区| 国内欧美视频一区二区| 国产suv精品一区二区6| 国产成人aaa| 99精品1区2区| 欧美自拍偷拍一区| 欧美美女激情18p| 欧美一区二区在线不卡| 久久久综合九色合综国产精品| 久久日一线二线三线suv| 国产亚洲欧美日韩俺去了| 欧美高清在线精品一区| 综合中文字幕亚洲| 亚洲一区二区在线播放相泽| 日韩成人av影视| 国产伦理精品不卡| 91在线播放网址| 欧美丰满高潮xxxx喷水动漫| 日韩欧美的一区二区| 国产午夜精品在线观看| 亚洲女性喷水在线观看一区| 亚洲资源在线观看| 久久精品久久久精品美女| 国产福利精品导航| 91蝌蚪porny九色| 欧美精品日韩一本| 国产日韩三级在线| 亚洲精品高清视频在线观看| 美女诱惑一区二区| 一本色道久久综合亚洲aⅴ蜜桃| 欧美性感一类影片在线播放| 2021中文字幕一区亚洲| 亚洲人成网站色在线观看| 日本伊人午夜精品| youjizz久久| 91精品婷婷国产综合久久竹菊| 久久综合色鬼综合色| 国产精品成人免费精品自在线观看| 亚洲国产日韩综合久久精品| 国产老女人精品毛片久久| 色老头久久综合| 久久精品视频一区二区三区| 亚洲在线观看免费视频| 精品亚洲免费视频| 色噜噜狠狠一区二区三区果冻| 精品国精品自拍自在线| 一区二区高清在线| 国产一区二区调教| 91精品一区二区三区久久久久久| 国产精品蜜臀在线观看| 激情国产一区二区| 欧美日韩日日夜夜| 日韩理论片网站| 国产成人综合网| 日韩三级高清在线| 偷拍日韩校园综合在线| 91在线无精精品入口| 国产亚洲一区二区三区在线观看| 五月天精品一区二区三区| 色综合一区二区三区| 国产午夜一区二区三区| 美女视频一区二区| 欧美日本视频在线| 亚洲精品va在线观看| 9i看片成人免费高清| 久久久精品国产免大香伊| 日韩成人dvd| 这里只有精品视频在线观看| 一区二区三区小说| 色欧美88888久久久久久影院| 亚洲国产精品成人综合色在线婷婷| 免费成人在线网站| 欧美一区二区在线看| 亚洲电影第三页| 精品视频999| 亚洲图片有声小说| 色国产精品一区在线观看| 亚洲素人一区二区| 97aⅴ精品视频一二三区| 国产精品久线在线观看| 成人av资源下载| 国产精品色哟哟网站| av福利精品导航| 亚洲欧美另类图片小说| 91精品91久久久中77777| 亚洲精品中文字幕在线观看| www.亚洲在线| 亚洲色图欧美偷拍| 91国模大尺度私拍在线视频| 亚洲一卡二卡三卡四卡五卡| 欧美日韩成人高清| 蜜桃久久久久久久| 久久久一区二区| 成人丝袜18视频在线观看| 国产精品视频一区二区三区不卡| 成人毛片在线观看| 夜夜嗨av一区二区三区网页 | 国产精品99久久久| 欧美国产精品劲爆| 色综合久久九月婷婷色综合| 一区二区三区免费| 91精品国产综合久久蜜臀| 日本成人超碰在线观看| 日韩一区二区精品| 国产激情精品久久久第一区二区| 中文字幕精品一区二区精品绿巨人 | 国产精品乱人伦| 91视频观看视频| 丝袜美腿亚洲一区| 欧美zozo另类异族| 成人动漫一区二区| 亚洲成av人片一区二区| 久久午夜羞羞影院免费观看| heyzo一本久久综合| 一区二区三区自拍| 日韩欧美亚洲一区二区| 岛国精品一区二区|