1. socket通信:有客户端和服务端的socket代码。
2. 多线程:客户端和服务端各用一线程发送信息;服务端另有一监听线程,用于把超时的信息删除。
这里应用到了同步,使两个线程可以操作同一个map。
代码:(类全在同一个包内)
server端:
Java代码 < type="application/x-shockwave-flash" width="14" height="15" src="http://yidwo.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=%0Aimport%20java.io.BufferedReader%3B%0Aimport%20java.io.InputStreamReader%3B%0Aimport%20java.io.PrintWriter%3B%0Aimport%20java.net.ServerSocket%3B%0Aimport%20java.net.Socket%3B%0Aimport%20java.util.Collections%3B%0Aimport%20java.util.concurrent.TimeUnit%3B%0Aimport%20java.util.HashMap%3B%0Aimport%20java.util.Map%3B%0A%0Apublic%20class%20ServerNet%20%7B%0A%09%2F%2F%20%E4%BB%A5%E6%AF%AB%E7%A7%92%E4%B8%BA%E5%8D%95%E4%BD%8D%20%0A%09private%20final%20static%20long%20timeLimit%20%3D%2010000%20%3B%0A%09private%20Map%3CString%2CString%3E%20map%20%3D%20Collections.synchronizedMap(new%20HashMap%3CString%2CString%3E())%3B%0A%09%09%0A%09public%20void%20ServerSocketNet()%7B%0A%09%09try%7B%0A%09%09%09%20ServerSocket%20ss%20%3D%20new%20ServerSocket(6060)%3B%0A%09%09%09%20Socket%20s%20%3D%20ss.accept()%3B%0A%09%09%09%20%2F%2F%20%E7%94%A8%E4%BA%8E%E8%8E%B7%E5%8F%96%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BC%A0%E8%BE%93%E6%9D%A5%E7%9A%84%E4%BF%A1%E6%81%AF%0A%09%09%09%20BufferedReader%20buff%20%3D%20new%20BufferedReader(new%20InputStreamReader(s.getInputStream()))%3B%0A%09%09%09%20%2F%2F%20%E7%94%A8%E4%BA%8E%E8%8E%B7%E5%8F%96%E6%9C%8D%E5%8A%A1%E7%AB%AF%E5%87%86%E5%A4%87%E5%93%8D%E5%BA%94%E7%9A%84%E4%BF%A1%E6%81%AF%0A%09%09%09%20BufferedReader%20in%20%3D%20new%20BufferedReader(new%20InputStreamReader(System.in))%3B%0A%09%09%09%20%2F%2F%20%E5%8F%91%E9%80%81%E6%9C%8D%E5%8A%A1%E7%AB%AF%E5%87%86%E5%A4%87%E5%93%8D%E5%BA%94%E7%9A%84%E4%BF%A1%E6%81%AF%0A%09%09%09%20PrintWriter%20pw%20%3D%20new%20PrintWriter(s.getOutputStream()%2Ctrue)%3B%09%09%09%20%0A%