📄 tcpserver.java
字号:
os.println("ERROR 101: Syntax error"); } else if (operator.equals("=") && argument.equals("")) { os.println("ERROR 101: Syntax error"); } else if (cmd.equalsIgnoreCase("SETUSER") && argument.indexOf(" ") == -1) { boolean flag = true; if (verifyUser) { long t = System.currentTimeMillis(); flag = resolver.verifyUser(argument); t = System.currentTimeMillis() - t; logger.info("User <" + argument + "> verified, ellapsed Time = " + t + "ms"); } if (flag) { user = argument; logger.info("Setting user = <" + argument + ">"); os.println("OK"); } else { user = null; logger.error("Invalid user ID = <" + argument + ">"); os.println("ERROR 202: Invalid user ID"); } } else if (cmd.equalsIgnoreCase("EXPR")) { if (user == null) { logger.error("No user set"); os.println("ERROR 200: No user set"); } else { logger.info("Evaluating <" + argument + "> for user <" + user + ">"); long t = System.currentTimeMillis(); try { boolean answer = evaluator.evaluateExpression(user, argument); t = System.currentTimeMillis() - t; os.println(answer); os.println("OK"); logger.info("Answer = <" + answer + ">, ellapsed Time = " + t + "ms"); } catch (ParserException pe) { logger.error("Error while parsing expression <" + argument + ">", pe); os.println("ERROR 201: Expression <" + argument + "> can not be evaluated - " + pe.getMessage()); } } } else { os.println("ERROR 100: Unknown command"); } } else { os.println("ERROR 101: Syntax error"); } } return result; } /** This is the main loop of the server. It receives and dispatches the commands * and sends the results back to the client. */ public void run() { ignoreCase = AccessServer.getIgnoreCase(); pCommandLine = Pattern.compile("^\\s*([a-zA-Z0-9]+)\\s*(=?)\\s*(.*)\\s*$"); InetAddress inetAdr = socket.getInetAddress(); String ipAddr = inetAdr.getHostAddress(); int port = socket.getPort(); logger.info("Connection opened from " + ipAddr + " (" + inetAdr.getCanonicalHostName() + ") port " + port); if (ipAddr.equals("0:0:0:0:0:0:0:1") || ipAddr.equals("127.0.0.1")) { logger.info("Connection from localhost recognized"); localHostFlag = true; } try { BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintStream os = new PrintStream(socket.getOutputStream()); os.println("iiitAccessServer - For help send command \"HELP\""); os.println("OK"); while (running) { String request = is.readLine(); if (request == null) running = false; else running = running && processLine(os, request); } logger.info("Connection to " + ipAddr + " port " + port + " closed."); is.close(); os.close(); socket.close(); } catch (IOException e) { if (running) logger.error("IO exception caught while listening to " + ipAddr + " port " + port, e); try { socket.close(); } catch (IOException ie) { // Do nothing } } handlers.remove(this); } }}/** * $Log: TcpServer.java,v $ * Revision 1.14 2003/04/14 20:41:41 joerg * Setting name for thread. * * Revision 1.13 2003/04/13 21:09:56 joerg * Package structure modified * * Revision 1.12 2003/04/13 20:28:01 joerg * Package structure modified * * Revision 1.11 2003/04/13 20:16:42 joerg * Package structure modified * * Revision 1.10 2003/03/27 20:39:22 joerg * Names of constants changed. * * Revision 1.9 2003/01/17 19:57:48 joerg * Wenn die globale Config-Variable VerifyUser den Wert TRUE * hat, wird beim Kommando setuser die UserId ueberprueft. * * Revision 1.8 2003/01/04 17:15:43 joerg * Zus鋞zliche Config-Option IgnoreCase * * Revision 1.7 2003/01/02 16:31:17 joerg * Fehlerkorrektur * * Revision 1.6 2003/01/01 21:16:55 joerg * Fehlermeldungen um eindeutige Nummern erweitert. * * Revision 1.5 2003/01/01 21:04:18 joerg * Copyright-Statement aktualisiert * * Revision 1.4 2002/12/27 20:50:23 joerg * Fehlerbehandlung beim Oeffnen des Sockets * * Revision 1.3 2002/12/22 21:02:10 joerg * Fehler beim shutdown() behoben * * Revision 1.2 2002/12/22 20:45:23 joerg * shutdown()-Methode eingebaut * * Revision 1.1 2002/12/19 15:24:23 joerg * Reparatur des CVS-Repositories * * Revision 1.17 2002/12/09 21:14:15 joerg * AccessServerThreadPluginIf umbenannt in ThreadPluginIf * * Revision 1.16 2002/12/09 19:29:17 joerg * Versionsdaten in allen JavaDoc-Klassenbeschreibungen ergaenzt * * Revision 1.15 2002/12/09 10:35:09 joerg * Javadoc vervollstaendigt * DefaultPort ist jetzt 54321 * * Revision 1.14 2002/12/08 14:35:01 joerg * Plugin-Interface neu strukturiert * * Revision 1.13 2002/11/30 21:19:46 joerg * Kommando-Verarbeitung komplett ueberarbeitet * * Revision 1.12 2002/11/27 22:30:34 joerg * Fehlermeldung verbessert * * Revision 1.11 2002/11/26 14:57:14 joerg * Fehlerbehandlung korrigiert. * * Revision 1.10 2002/11/26 10:56:06 joerg * Package exprparser durch parser erstzt. * * Revision 1.9 2002/11/21 08:34:23 joerg * Ausgaben an den Client ueberarbeitet * * Revision 1.8 2002/11/20 11:10:38 joerg * Umgebaut zumServerPlugin * ParserExceptions werden behandelt * * Revision 1.7 2002/11/06 11:15:47 joerg * Jede Instanz hat jetzt ihren eigenen ExpressionEvaluator * * Revision 1.6 2002/11/04 09:38:09 joerg * Klasse ExpressionResolver ins Package AccessServer verschoben * und in ExpressionEvaluator umbenannt. * * Revision 1.5 2002/11/03 21:56:27 joerg * Aufloesung von Ausdruecken implementiert. * * Revision 1.4 2002/11/03 20:39:08 joerg * Log-Ausgaben an neuen Klassenname angepasst. * * Revision 1.3 2002/11/03 20:31:46 joerg * Klasse TcpListener umbenannt in TcpServer * * Revision 1.2 2002/11/03 20:28:36 joerg * Klasse TcpServer als InnerClass TcpHandler nach TcpListener verschoben. * * Revision 1.1 2002/11/03 14:45:03 joerg * Klassen neu angelegt * */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -