import java.net.*; import java.io.*; public class MyServerSocket extends Thread { private Socket sock; private Server owner; private long lastTime; // constructor public MyServerSocket(Socket s, Server o) { sock = s; owner = o; lastTime = System.currentTimeMillis(); } // run that is started by the start call to JVM public void run() { sendMessage("Welcome to this server." + " Log off with 'logout'."); sendMessage("Get the list of connected users" + " with command 'wwhhoo'"); try { BufferedReader bis = new BufferedReader( new InputStreamReader( sock.getInputStream())); String line; while ((line = bis.readLine()) != null) { lastTime = System.currentTimeMillis(); if (line.toLowerCase().trim(). equals("logout")) { break; // out from the while loop } else if (line.length() > 0) { // skip empty lines owner.handleMessage(line, this); } } sock.close(); } catch (Exception e) { } owner.loggedOf(this); } public String getIP() { return (sock.getInetAddress().getHostAddress() + " at " + sock.getInetAddress().getHostName()); } public void sendMessage(String txt) { try { PrintWriter pws = new PrintWriter( sock.getOutputStream(), true); pws.println(txt); } catch (IOException e) { } } public boolean isInactive(long time) { if (lastTime < time) { /* will cause an automatic logout in this * object's run method */ try { sock.close(); } catch (IOException e) {} return true; } else { return false; } } }