public classMyServer
{public static List clientlist = new ArrayList();private static Timer timer = newTimer();public static voidrerfresh()
{
timer.schedule(new MyClientRefreshTask(), 1000*0, 1000*15);
}public static voiddestroyedTimer()
{if(timer1!=null)
{
timer1.cancel();
}if(timer!=null)
{
timer.cancel();
}
}public static void invoke(final Socket client) throwsIOException
{new Thread(newRunnable()
{public voidrun()
{
String errcmd= "{\"cmd\":-1}";
String nocmd= "{\"cmd\":0}";
BufferedReader in= null;
PrintWriter out= null;try{
in= new BufferedReader(newInputStreamReader(
client.getInputStream()));
out= newPrintWriter(client.getOutputStream());
Integer count= 0;while (true)
{
String cmdmsg=in.readLine();
count++;
System.out.println(count);
System.out.println("Server received " +cmdmsg);
JSONObject jsmsg=JSONObject.fromObject(cmdmsg);
System.out.println("JSONObject success");
String cmd= jsmsg.getString("cmd");switch(cmd)
{case "1":
com.progress.cmd1.process(client, jsmsg);break;case "2":
com.progress.cmd2.process(client, jsmsg);break;default:
out.println(nocmd);
out.flush();
}if (cmdmsg.equals("bye"))
{break;
}
}
}catch(JSONException ex)
{
System.out.println("JSONObject err");
out.println(errcmd);
out.flush();
}catch(Exception ex)
{
ex.printStackTrace();
}finally{try{
in.close();
}catch(Exception e)
{
}try{
out.close();
}catch(Exception e)
{
}try{
client.close();
}catch(Exception e)
{
}
}
}
}).start();
}static class MyClientRefreshTask extendsjava.util.TimerTask
{public voidrun()
{
refreshClient();
}
}private static voidrefreshClient()
{
List dels = new ArrayList();for (int i = 0; i < MyServer.clientlist.size(); i++)
{if (MyServer.clientlist.get(i).getSocket().isClosed())
{
System.out.println("it is the del client!");
dels.add(clientlist.get(i));
}
}
System.out.println("clientlist num:"+clientlist.size());
System.out.println("dels num:"+dels.size());
clientlist.removeAll(dels);
System.out.println("clientlist left num:"+clientlist.size());
}
}