📄 logserver.java
字号:
import java.net.*;import java.io.*;public class LogServer extends Object{ public static final int DEFAULT_PORT=7114; public static final String DISCONNECT_MSG="closeConnection"; public static final int MAX_SILENCE=(1000*60*10);//10 minutes public static final String OK_MSG="ok"; private PrintWriter log; static public void main(String[] argv) { LogServer serv; String logFile=null; if(argv.length > 0) { logFile = argv[0]; } serv = new LogServer(logFile); serv.start(); } public LogServer(String logFile) { OutputStream out; try { if(logFile != null) { out = new FileOutputStream(logFile); } else { out = System.out; } log = new PrintWriter(out,true); } catch(Exception exp) { log = null; System.out.println("Error creating log. "+exp); } } public void start() { ServerSocket servSock; Socket clientSock; LogServerThread thread; try { if(log == null) throw new Exception(); log("Starting server."); servSock = new ServerSocket(DEFAULT_PORT); while(servSock != null) { clientSock = servSock.accept(); thread = new LogServerThread(clientSock,this); thread.start(); } } catch(Exception ex) { System.out.println("Server going down..."); } } public void log(String str) { synchronized(log) { log.println(str); } }}class LogServerThread extends Thread{ Socket clientSock; LogServer server; InetAddress clientAddr; public LogServerThread(Socket client,LogServer serv) { clientSock = client; try { clientSock.setSoTimeout(LogServer.MAX_SILENCE); } catch(Exception exp) { } clientAddr = client.getInetAddress(); server = serv; server.log("Accepted connection: "+clientAddr.getHostAddress()); } public void run() { BufferedReader reader=null; PrintWriter writer=null; Reader readIn; String message; try { readIn = new InputStreamReader(clientSock.getInputStream()); reader = new BufferedReader(readIn); writer = new PrintWriter(clientSock.getOutputStream(),true); while(true) { message = reader.readLine(); if(LogServer.DISCONNECT_MSG.equals(message)) { break; } else { writer.println(LogServer.OK_MSG); } server.log(clientAddr.getHostAddress()+" "+message); } } catch(Exception exp) { //Timeout will throw an exception, as will //the client socket closing, catch the exception //and clean up in finally } finally { try { server.log("Closing connection: "+clientAddr.getHostAddress()); if(reader != null) reader.close(); if(writer != null) writer.close(); clientSock.close(); } catch(Exception ex) { } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -