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

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

?? quickserver.java

?? 一個用java編寫的服務器,對于學習網絡編程的人來說是個很好的例子
?? JAVA
?? 第 1 頁 / 共 5 頁
字號:
		//v1.3.3
		if(getSecurityManagerClass()!=null) {
			System.setSecurityManager(getSecurityManager());
		}
		
		blockingMode = getBasicConfig().getServerMode().getBlocking();

		setServiceState(Service.INIT);
		t = new Thread(this, "QuickServer - "+getName());
		t.start();

		do {
			Thread.yield();	
		} while(getServiceState()==Service.INIT);

		if(getServiceState()!=Service.RUNNING) {			
			if(exceptionInRun!=null)
				throw new AppException("Could not start server "+getName()
					+"! Details: "+exceptionInRun);
			else
				throw new AppException("Could not start server "+getName());
		}
		lastStartTime = new java.util.Date();
		logger.fine("Started "+getName()+", Date: "+lastStartTime);
	}

	/**
	 * Stops the QuickServer.
	 *
	 * @exception org.quickserver.net.AppException 
	 *  if could not stop server
	 * @since 1.1
	 * @see #stopService
	 */
	public void stopServer() throws AppException {
		processServerHooks(ServerHook.PRE_SHUTDOWN);
		logger.warning("Stopping "+getName());
		stopServer = true;
		Socket death = null;
		if(isClosed()==true) {
			logger.warning("Server "+getName()+" is not running!");
			throw new AppException("Server "+getName()+" is not running!");
		}
		try	{
			if(getBlockingMode()==true) {
				if(getSecure().isEnable()==false) {
					death = new Socket(server.getInetAddress(), 
						server.getLocalPort());
					death.getInputStream().read();
					death.close();
				} else {
					death = getSSLSocketFactory().createSocket(
						server.getInetAddress(), server.getLocalPort());
					Thread.currentThread().sleep(100);
					death.close();
				}
			}

			if(serverSocketChannel!=null) {
				serverSocketChannel.close();
			}

		} catch(IOException e){
			logger.fine("IOError stopping "+getName()+": "+e);
		} catch(Exception e){
			logger.warning("Error stopping "+getName()+": "+e);
			throw new AppException("Error in stopServer "+getName()+": "+e);
		}

		for(int i=0;getServiceState()!=Service.STOPPED;i++) {
			try {
				Thread.sleep(60);
			} catch(Exception e) {
				logger.warning("Error waiting for "+getName()+" to fully stop. Error: "+e);
			}
			if(i>1000) {
				logger.severe("Server was not stopped even after 10sec.. will terminate now.");
				System.exit(-1);
			}
		}
		if(adminServer==null || getQSAdminServer().getServer()!=this) {
			//so this is not qsadmin
			setClassLoader(null);
		}
		logger.info("Stopped "+getName());
	}

	/**
	 * Restarts the QuickServer.
	 *
	 * @exception org.quickserver.net.AppException 
	 *  if could not stop server or if it could not start the server.
	 * @since 1.2
	 */
	public void restartServer() throws AppException {
		stopServer();
		startServer();
	}

    /**
     * Returns the name of the QuickServer. Default is 'QuickServer'.
     * @see #setName
     */
	public String getName() {
		return serverName;
	}
    /**
     * Sets the name for the QuickServer
     * @param name for the QuickServer
     * @see #getName
     */
	public void setName(String name) {
		serverName = name;
		logger.finest("Set to : "+name);
	}

	/**
     * Returns the Server Banner of the QuickServer
     * @see #setServerBanner
     */
	public String getServerBanner() {
		return serverBanner;
	}
    /**
     * Sets the serverBanner for the QuickServer
	 * that will be displayed on the standard output [console]
	 * when server starts. <br>&nbsp;<br>
	 * To set welcome message to your client
	 * {@link ClientEventHandler#gotConnected}
     * @param banner for the QuickServer
     * @see #getServerBanner
     */
	public void setServerBanner(String banner) {
		serverBanner = banner;
		logger.finest("Set to : "+banner);
	}

    /**
     * Sets the port for the QuickServer to listen on.
	 * If not set, it will run on Port 9876 
	 * @param port to listen on.
     * @see #getPort
     */
	public void setPort(int port) {		
		if(port<0) {
			throw new IllegalArgumentException("Port number can not be less than 0!");
		}
		serverPort=port;
		logger.finest("Set to "+port);
	}
	/**
     * Returns the port for the QuickServer.
     * @see #setPort
     */
	public int getPort() {
		if(isClosed()==false) {
			return server.getLocalPort();
		}

		if(getSecure().isEnable()==false) {
			return serverPort;
		} else {
			int _port = getSecure().getPort();
			if(_port == -1) 
				return serverPort;
			else
				return _port;
		}
	}

	/**
     * Sets the ClientCommandHandler class that interacts with 
	 * client sockets.
	 * @param handler the fully qualified name of the class that 
	 *  implements {@link ClientCommandHandler}
	 * @see #getClientCommandHandler
     */
	public void setClientCommandHandler(String handler) {
		clientCommandHandlerString = handler;
		logger.finest("Set to "+handler);
	}	
	/**
     * Returns the ClientCommandHandler class that interacts with 
	 * client sockets.
	 * @see #setClientCommandHandler
	 * @since 1.1
     */
	public String getClientCommandHandler() {
		return clientCommandHandlerString;
	}

	/**
     * Sets the ClientAuthenticationHandler class that 
	 * handles the authentication of a client.
	 * @param authenticator the fully qualified name of the class 
	 * that implements {@link ClientAuthenticationHandler}.
	 * @see #getClientAuthenticationHandler
	 * @since 1.4.6
     */
	public void setClientAuthenticationHandler(String authenticator) {
		clientAuthenticationHandlerString = authenticator;
		logger.finest("Set to "+authenticator);
	}
	/**
     * Returns the ClientAuthenticationHandler class that 
	 * handles the authentication of a client.
	 * @see #setClientAuthenticationHandler
	 * @since 1.4.6
     */
	public String getClientAuthenticationHandler() {
		return clientAuthenticationHandlerString;
	}

	/**
     * Sets the Authenticator class that 
	 * handles the authentication of a client.
	 * @param authenticator the fully qualified name of the class 
	 * that implements {@link Authenticator} or {@link ClientAuthenticationHandler}.
	 * @see #getAuthenticator
	 * @deprecated since 1.4.6 use setClientAuthenticationHandler
	 * @since 1.3
     */
	public void setAuthenticator(String authenticator) {
		clientAuthenticationHandlerString = authenticator;
		logger.finest("Set to "+authenticator);
	}
	/**
     * Returns the Authenticator class that 
	 * handles the authentication of a client.
	 * @see #setAuthenticator
	 * @deprecated since 1.4.6 use getClientAuthenticationHandler
	 * @since 1.3
     */
	public String getAuthenticator() {
		return clientAuthenticationHandlerString;
	}

	/**
     * Sets the ClientData class that carries client data.
	 * @param data the fully qualified name of the class that 
	 * extends {@link ClientData}.
	 * @see #getClientData
     */
	public void setClientData(String data) {
		this.clientDataString = data;
		logger.finest("Set to "+data);
	}
	/**
     * Returns the ClientData class string that carries client data  
	 * @return the fully qualified name of the class that 
	 * implements {@link ClientData}.
	 * @see #setClientData
     */
	public String getClientData() {
		return clientDataString;
	}

	/**
     * Sets the client socket's timeout.
	 * @param time client socket timeout in milliseconds.
	 * @see #getTimeout
     */
	public void setTimeout(int time) {
		if(time>0)
			socketTimeout = time;
		else
			socketTimeout = 0;
		logger.finest("Set to "+socketTimeout);
	}	
	/**
     * Returns the Client socket timeout in milliseconds.
	 * @see #setTimeout
     */
	public int getTimeout() {
		return socketTimeout;
	}

	/** 
	 * Sets max allowed login attempts.
	 * @since 1.2
	 * @see #getMaxAuthTry
	 */
	public void setMaxAuthTry(int authTry) {
		maxAuthTry = authTry;
		logger.finest("Set to "+authTry);
	}
	/** 
	 * Returns max allowed login attempts. Default is <code>5</code>.
	 * @since 1.2
	 * @see #setMaxAuthTry
	 */
	public int getMaxAuthTry() {
		return maxAuthTry;
	}

	/** 
	 * Sets message to be displayed when maximum allowed login 
	 * attempts has reached.
	 * Default is : -ERR Max Auth Try Reached
	 * @see #getMaxAuthTryMsg
	 */
	public void setMaxAuthTryMsg(String msg) {
		maxAuthTryMsg = msg;
		logger.finest("Set to "+msg);
	}
	/** 
	 * Returns message to be displayed when maximum allowed login 
	 * attempts has reached.
	 * @see #getMaxAuthTryMsg
	 */
	public String getMaxAuthTryMsg() {
		return maxAuthTryMsg;
	}

	/**
	 * Sets timeout message. 
	 * Default is : -ERR Timeout
	 * @see #getTimeoutMsg
	 */
	public void setTimeoutMsg(String msg) {
		timeoutMsg = msg;
		logger.finest("Set to "+msg);
	}
	/** 
	 * Returns timeout message.
	 * @see #setTimeoutMsg
	 */
	public String getTimeoutMsg() {
		return timeoutMsg;
	}

	private TheClient initTheClient() {
		TheClient theClient = new TheClient();
		theClient.setServer(QuickServer.this);
		theClient.setTimeoutMsg(getTimeoutMsg());
		theClient.setMaxAuthTry(getMaxAuthTry()); //v1.2
		theClient.setMaxAuthTryMsg(getMaxAuthTryMsg());
		
		theClient.setClientEventHandler(clientEventHandler);
		theClient.setClientExtendedEventHandler(clientExtendedEventHandler); //v1.4.6
		theClient.setClientCommandHandler(clientCommandHandler);
		theClient.setClientObjectHandler(clientObjectHandler); //v1.2
		theClient.setClientBinaryHandler(clientBinaryHandler); //v1.4
		theClient.setClientWriteHandler(clientWriteHandler); //v1.4.5
		theClient.setAuthenticator(authenticator); //v1.3
		theClient.setClientAuthenticationHandler(clientAuthenticationHandler); //v1.4.6
		theClient.setTimeout(socketTimeout);
		theClient.setMaxConnectionMsg(maxConnectionMsg);
		theClient.setCommunicationLogging(getCommunicationLogging()); //v1.3.2
		return theClient;
	}

	public void run() {
		exceptionInRun = null;
		TheClient theClient = initTheClient();
		try {
			stopServer = false;

			closeAllPools();
			initAllPools();
			
			makeServerSocket();
			System.out.println(serverBanner); //print banner
			setServiceState(Service.RUNNING); //v1.2
			
			processServerHooks(ServerHook.POST_STARTUP); //v1.3.3
			if(getBlockingMode()==false) {
				runNonBlocking(theClient);
				if(stopServer==true) {
					logger.finest("Closing selector for "+getName());
					selector.close();
				}
				return;
			} else {
				runBlocking(theClient);
			}
		} catch(BindException e) {
			exceptionInRun = e;
			logger.severe(getName()+" BindException for Port "+getPort()+" @ "+
				getBindAddr().getHostAddress()+" : "+e.getMessage());
		} catch(javax.net.ssl.SSLException e) {
			exceptionInRun = e;
			logger.severe("SSLException "+e);
			logger.fine("StackTrace:\n"+MyString.getStackTrace(e));
		} catch(IOException e) {
			exceptionInRun = e;
			logger.severe("IOError "+e);
			logger.fine("StackTrace:\n"+MyString.getStackTrace(e));
		} catch(Exception e) {
			exceptionInRun = e;
			logger.severe("Error "+e);
			logger.fine("StackTrace:\n"+MyString.getStackTrace(e));
		} finally {
			if(getBlockingMode()==true) {
				logger.warning("Closing "+getName());
				try	{
					if(isClosed()==false) {						
						server.close();
					}
				} catch(Exception e){
					throw new RuntimeException(e);
				}
				server = null;
				serverSocketChannel = null;

				setServiceState(Service.STOPPED);
				logger.warning("Closed "+getName());

				processServerHooks(ServerHook.POST_SHUTDOWN);
			} else if(getBlockingMode()==false && exceptionInRun!=null) {
				logger.warning("Closing "+getName()+" - Had Error: "+exceptionInRun);
				try	{
					if(isClosed()==false) {
						if(serverSocketChannel!=null)
							serverSocketChannel.close();
						if(server!=null)
							server.close();
					}
				} catch(Exception e){
					throw new RuntimeException(e);
				}		

				server = null;
				serverSocketChannel = null;

				setServiceState(Service.STOPPED);
				logger.warning("Closed "+getName());

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费观看2025年上映的电影 | 日本v片在线高清不卡在线观看| 日韩欧美一区二区三区在线| 国产不卡免费视频| 日日夜夜一区二区| 亚洲色图视频网| 国产欧美一区二区精品性色 | 欧美久久免费观看| 成人做爰69片免费看网站| 美女视频一区二区三区| 一级精品视频在线观看宜春院| 亚洲国产精品二十页| 日韩精品一区二区三区在线观看| 在线观看日韩国产| av日韩在线网站| 成人性色生活片| 国产一区二区三区在线观看精品 | 91亚洲精品久久久蜜桃网站| 国产福利精品一区二区| 美女视频第一区二区三区免费观看网站| 国内精品不卡在线| 日一区二区三区| 亚洲成人激情自拍| 亚洲国产视频网站| 亚洲午夜电影网| 亚洲国产毛片aaaaa无费看| 亚洲免费色视频| 亚洲天堂2016| 亚洲欧美成aⅴ人在线观看| 国产精品沙发午睡系列990531| 337p日本欧洲亚洲大胆精品 | 99re在线精品| av在线播放不卡| 99久久久精品免费观看国产蜜| 国产精品69久久久久水密桃| 国产精品一区二区久激情瑜伽| 精品亚洲成a人| 国产一区二区剧情av在线| 久草热8精品视频在线观看| 欧美aaaaaa午夜精品| 麻豆精品国产传媒mv男同| 日韩国产欧美一区二区三区| 免费成人结看片| 蜜臀av性久久久久蜜臀aⅴ| 男男成人高潮片免费网站| 蜜臀av国产精品久久久久| 久久99精品久久久久久久久久久久 | 91精品国产免费| 在线精品视频一区二区| 欧美影院一区二区三区| 欧美综合视频在线观看| 欧美在线小视频| 欧美亚州韩日在线看免费版国语版| 99精品黄色片免费大全| 欧美影视一区在线| 日韩一区二区高清| 久久精品免费在线观看| 国产精品久久久久久久久快鸭| 亚洲人成伊人成综合网小说| 亚洲国产精品久久人人爱| 日韩国产欧美在线播放| 久久99精品久久久| k8久久久一区二区三区| 欧美午夜精品一区| 日韩三级中文字幕| 国产无人区一区二区三区| 成人av网站免费观看| 不卡视频一二三四| 欧美性猛片aaaaaaa做受| 日韩欧美成人午夜| 中文字幕av一区二区三区高| 亚洲精品国产精华液| 美女脱光内衣内裤视频久久网站| 高潮精品一区videoshd| 在线观看国产日韩| 久久亚洲捆绑美女| 亚洲激情网站免费观看| 精品一区二区三区在线视频| eeuss鲁片一区二区三区在线观看| 精品污污网站免费看| 久久影院视频免费| 亚洲精品国产无天堂网2021| 狠狠色狠狠色合久久伊人| 色狠狠av一区二区三区| 精品国产免费久久| 一区二区三区视频在线观看| 精品亚洲国产成人av制服丝袜 | 国产一区二区三区电影在线观看| 久久成人免费日本黄色| 奇米综合一区二区三区精品视频| 久久精品久久精品| av高清久久久| 欧美成va人片在线观看| 亚洲精品一二三| 久久精品国产亚洲aⅴ| 91激情五月电影| 欧美激情一区二区三区不卡| 首页国产丝袜综合| 91丨九色丨国产丨porny| 日韩欧美一区在线| 中文字幕一区日韩精品欧美| 国精品**一区二区三区在线蜜桃| 在线免费观看成人短视频| 国产日韩亚洲欧美综合| 男女激情视频一区| 欧美日韩国产免费一区二区| 国产精品福利影院| 国产乱码精品一区二区三区av| 欧美色网一区二区| 最近日韩中文字幕| 国产黄色精品视频| 欧美一区二区久久| 五月天久久比比资源色| 久久亚洲一级片| 不卡的av网站| 欧美在线播放高清精品| 综合亚洲深深色噜噜狠狠网站| 激情综合色综合久久| 91精品在线一区二区| 亚洲成人综合网站| 欧美性生活影院| 亚洲欧美另类小说| 91小视频在线免费看| 中文字幕永久在线不卡| 成人精品视频一区二区三区尤物| 精品久久久久一区| 久久99精品久久久久| 日韩一级黄色片| 久久精品国产在热久久| 欧美成人高清电影在线| 久久精工是国产品牌吗| 日韩欧美三级在线| 蜜桃视频免费观看一区| 欧美一区二区黄| 蜜臀久久久99精品久久久久久| 91精品国产一区二区三区蜜臀| 天堂影院一区二区| 91精品黄色片免费大全| 美女一区二区视频| 久久综合色之久久综合| 国产成人午夜电影网| 国产精品免费视频网站| 日本道色综合久久| 色网站国产精品| 亚洲日本va在线观看| 99综合影院在线| 一区二区日韩电影| 精品视频在线免费| 亚洲不卡一区二区三区| 欧美一级二级三级蜜桃| 九九精品一区二区| 国产无一区二区| 97超碰欧美中文字幕| 亚洲资源中文字幕| 久久久久久久久99精品| 成人亚洲一区二区一| 亚洲精品自拍动漫在线| 欧美日韩一区不卡| 日本中文字幕一区二区视频| 久久一夜天堂av一区二区三区 | 国产精一区二区三区| 国产精品色在线观看| 91国产福利在线| 午夜精品福利一区二区三区av| 日韩精品一区在线| 播五月开心婷婷综合| 亚洲国产精品人人做人人爽| 精品粉嫩超白一线天av| 成人免费毛片嘿嘿连载视频| 亚洲一区在线观看免费| 日韩欧美高清在线| 成人av网站在线| 欧美中文字幕一二三区视频| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 91福利视频久久久久| 蜜桃视频第一区免费观看| 欧美国产一区视频在线观看| 欧美专区亚洲专区| 国产在线看一区| 亚洲一区二区视频在线| 2021久久国产精品不只是精品| 91欧美一区二区| 狠狠色狠狠色合久久伊人| 亚洲欧美一区二区三区极速播放 | 在线成人av影院| 国产乱淫av一区二区三区| 一区二区三区四区精品在线视频| 欧美成人激情免费网| 日本久久电影网| 精品一区二区在线视频| 亚洲午夜免费视频| 欧美va在线播放| 欧美亚洲尤物久久| 粉嫩嫩av羞羞动漫久久久| 日韩激情视频网站| 自拍偷拍国产精品| 欧美va亚洲va| 欧美日韩午夜精品| a亚洲天堂av| 国产米奇在线777精品观看|