📄 java socket和多线程(thread)实例 - java ssh ajax js css - javaeye技术网站.mht
字号:
From: =?gb2312?B?08kgV2luZG93cyBJbnRlcm5ldCBFeHBsb3JlciA3ILGjtOY=?=
Subject: =?gb2312?B?amF2YSBzb2NrZXS6zbbgz9+zzKOoVGhyZWFko6nKtcD9IC0gSkFWQQ==?=
=?gb2312?B?IFNTSCBBSkFYIEpTIENTUyAtIEphdmFFeWW8vMr1zfjVvg==?=
Date: Thu, 22 Jan 2009 18:37:58 -0000
MIME-Version: 1.0
Content-Type: multipart/related;
type="text/html";
boundary="----=_NextPart_000_0000_01C97CC0.8C14D3B0"
X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6001.18049
这是 MIME 格式的多方邮件。
------=_NextPart_000_0000_01C97CC0.8C14D3B0
Content-Type: text/html;
charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://yidwo.javaeye.com/blog/313607
=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML dir=3Dltr xml:lang=3D"zh-CN"=20
xmlns=3D"http://www.w3.org/1999/xhtml"><HEAD><TITLE>java =
socket=E5=92=8C=E5=A4=9A=E7=BA=BF=E7=A8=8B=EF=BC=88Thread=EF=BC=89=E5=AE=9E=
=E4=BE=8B - JAVA SSH AJAX JS CSS - =
JavaEye=E6=8A=80=E6=9C=AF=E7=BD=91=E7=AB=99</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3DUTF-8">
<META=20
content=3D"1. =
socket=E9=80=9A=E4=BF=A1=EF=BC=9A=E6=9C=89=E5=AE=A2=E6=88=B7=E7=AB=AF=E5=92=
=8C=E6=9C=8D=E5=8A=A1=E7=AB=AF=E7=9A=84socket=E4=BB=A3=E7=A0=81=E3=80=82 =
2. =
=E5=A4=9A=E7=BA=BF=E7=A8=8B=EF=BC=9A=E5=AE=A2=E6=88=B7=E7=AB=AF=E5=92=8C=E6=
=9C=8D=E5=8A=A1=E7=AB=AF=E5=90=84=E7=94=A8=E4=B8=80=E7=BA=BF=E7=A8=8B=E5=8F=
=91=E9=80=81=E4=BF=A1=E6=81=AF=EF=BC=9B=E6=9C=8D=E5=8A=A1=E7=AB=AF=E5=8F=A6=
=E6=9C=89=E4=B8=80=E7=9B=91=E5=90=AC=E7=BA=BF=E7=A8=8B=EF=BC=8C=E7=94=A8=E4=
=BA=8E=E6=8A=8A=E8=B6=85=E6=97=B6=E7=9A=84=E4=BF=A1=E6=81=AF=E5=88=A0=E9=99=
=A4=E3=80=82 =
=E8=BF=99=E9=87=8C=E5=BA=94=E7=94=A8=E5=88=B0=E4=BA=86=E5=90=8C=E6=AD=A5=EF=
=BC=8C=E4=BD=BF=E4=B8=A4=E4=B8=AA=E7=BA=BF=E7=A8=8B=E5=8F=AF=E4=BB=A5=E6=93=
=8D=E4=BD=9C=E5=90=8C=E4=B8=80=E4=B8=AAmap=E3=80=82 =
=E4=BB=A3=E7=A0=81=EF=BC=9A=EF=BC=88=E7=B1=BB=E5=85=A8=E5=9C=A8=E5=90=8C=E4=
=B8=80=E4=B8=AA=E5=8C=85=E5=86=85=EF=BC=89 server=E7=AB=AF=EF=BC=9A =
import java.io.BufferedReader; import java.io. ..."=20
name=3Ddescription>
<META content=3D"java=EF=BC=8Csocket=EF=BC=8Cthread java =
socket=E5=92=8C=E5=A4=9A=E7=BA=BF=E7=A8=8B=EF=BC=88Thread=EF=BC=89=E5=AE=9E=
=E4=BE=8B"=20
name=3Dkeywords><LINK href=3D"/images/favicon.ico" type=3Dimage/x-icon=20
rel=3D"shortcut icon"><LINK title=3D"JAVA SSH AJAX JS CSS " =
href=3D"/rss"=20
type=3Dapplication/rss+xml rel=3Dalternate><LINK media=3Dscreen=20
href=3D"http://www.javaeye.com/stylesheets/blog.css?1232533684" =
type=3Dtext/css=20
rel=3Dstylesheet><LINK media=3Dscreen=20
href=3D"http://www.javaeye.com/stylesheets/themes/blog/blue.css?120045187=
6"=20
type=3Dtext/css rel=3Dstylesheet>
<SCRIPT =
src=3D"http://www.javaeye.com/javascripts/application.js?1232418451"=20
type=3Dtext/javascript></SCRIPT>
<LINK media=3Dscreen=20
href=3D"http://www.javaeye.com/javascripts/syntaxhighlighter/SyntaxHighli=
ghter.css?1201588027"=20
type=3Dtext/css rel=3Dstylesheet>
<SCRIPT=20
src=3D"http://www.javaeye.com/javascripts/syntaxhighlighter/shCoreCommon.=
js?1232272610"=20
type=3Dtext/javascript></SCRIPT>
<STYLE>DIV#main {
BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; =
BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; =
WIDTH: 740px; PADDING-TOP: 0px; BACKGROUND-COLOR: transparent; =
BORDER-RIGHT-WIDTH: 0px
}
</STYLE>
<LINK media=3Dscreen=20
href=3D"http://www.javaeye.com/javascripts/editor/css/ui.css?1222156967" =
type=3Dtext/css rel=3Dstylesheet>
<SCRIPT =
src=3D"http://www.javaeye.com/javascripts/editor/compress.js?1225335142" =
type=3Dtext/javascript></SCRIPT>
<META content=3D"MSHTML 6.00.6001.18183" name=3DGENERATOR></HEAD>
<BODY>
<DIV id=3Dheader>
<DIV id=3Dblog_site_nav><A class=3Dhomepage =
href=3D"http://www.javaeye.com/">=E9=A6=96=E9=A1=B5</A> <A=20
href=3D"http://www.javaeye.com/news">=E6=96=B0=E9=97=BB</A> <A=20
href=3D"http://www.javaeye.com/forums">=E8=AE=BA=E5=9D=9B</A> <A=20
href=3D"http://www.javaeye.com/blogs">=E5=8D=9A=E5=AE=A2</A> <A=20
href=3D"http://job.javaeye.com/">=E6=8B=9B=E8=81=98</A> <A id=3Dmsna =
onclick=3D"return false;"=20
href=3D"http://yidwo.javaeye.com/blog/313607#"><U>=E6=9B=B4=E5=A4=9A</U> =
<SMALL>=E2=96=BC</SMALL></A>=20
<DIV class=3Dquick_menu style=3D"DISPLAY: none"><A=20
href=3D"http://www.javaeye.com/ask">=E9=97=AE=E7=AD=94</A> <A=20
href=3D"http://www.javaeye.com/wiki">=E7=9F=A5=E8=AF=86=E5=BA=93</A> <A=20
href=3D"http://www.javaeye.com/groups">=E5=9C=88=E5=AD=90</A> <A=20
href=3D"http://www.javaeye.com/search">=E6=90=9C=E7=B4=A2</A> =
</DIV></DIV>
<DIV id=3Duser_nav><A class=3Dwelcome title=3D=E7=99=BB=E5=BD=95=20
href=3D"http://yidwo.javaeye.com/login">=E6=82=A8=E8=BF=98=E6=B2=A1=E6=9C=
=89=E7=99=BB=E5=BD=95 !</A> <A=20
href=3D"http://yidwo.javaeye.com/all">=E5=85=A8=E7=AB=99=E5=8A=A8=E6=80=81=
</A> <A=20
href=3D"http://yidwo.javaeye.com/login">=E7=99=BB=E5=BD=95</A> <A =
class=3Dlast=20
href=3D"http://yidwo.javaeye.com/signup">=E6=B3=A8=E5=86=8C</A> =
</DIV></DIV>
<DIV id=3Dpage>
<DIV class=3Dclearfix id=3Dbranding>
<DIV id=3Dblog_name>
<H1><A href=3D"http://yidwo.javaeye.com/">JAVA SSH AJAX JS CSS =
</A></H1></DIV>
<DIV id=3Dblog_preview></DIV>
<DIV id=3Dblog_domain>=E6=B0=B8=E4=B9=85=E5=9F=9F=E5=90=8D <A=20
href=3D"http://yidwo.javaeye.com/">http://yidwo.javaeye.com/</A></DIV></D=
IV>
<DIV class=3Dclearfix id=3Dcontent>
<DIV id=3Dmain>
<DIV class=3Dblog_main>
<DIV id=3Dblog_nav>
<DIV id=3Dpre_next><A class=3Dpre =
href=3D"http://yidwo.javaeye.com/blog/150778">ajax +=20
java =
=E5=AE=9E=E7=8E=B0=E7=B1=BB=E4=BC=BC=E7=BD=91=E6=98=93=E9=82=AE=E7=AE=B1=E9=
=82=AE=E4=BB=B6=E5=9C=B0=E5=9D=80=E8=87=AA=E5=8A=A8 ...</A> </DIV></DIV>
<DIV class=3Dblog_title>
<DIV class=3Ddate><SPAN class=3Dyear>2009</SPAN><SPAN =
class=3Dsep_year>-</SPAN><SPAN=20
class=3Dmonth>01</SPAN><SPAN class=3Dsep_month>-</SPAN><SPAN=20
class=3Dday>09</SPAN></DIV>
<H3 class=3D"" title=3D=E9=9A=8F=E7=AC=94><A =
href=3D"http://yidwo.javaeye.com/blog/313607">java=20
socket=E5=92=8C=E5=A4=9A=E7=BA=BF=E7=A8=8B=EF=BC=88Thread=EF=BC=89=E5=AE=9E=
=E4=BE=8B</A></H3><STRONG>=E5=85=B3=E9=94=AE=E5=AD=97: =
java=EF=BC=8Csocket=EF=BC=8Cthread</STRONG> </DIV>
<DIV class=3Dblog_content>1. =
socket=E9=80=9A=E4=BF=A1=EF=BC=9A=E6=9C=89=E5=AE=A2=E6=88=B7=E7=AB=AF=E5=92=
=8C=E6=9C=8D=E5=8A=A1=E7=AB=AF=E7=9A=84socket=E4=BB=A3=E7=A0=81=E3=80=82 =
<BR><BR>2.=20
=E5=A4=9A=E7=BA=BF=E7=A8=8B=EF=BC=9A=E5=AE=A2=E6=88=B7=E7=AB=AF=E5=92=8C=E6=
=9C=8D=E5=8A=A1=E7=AB=AF=E5=90=84=E7=94=A8=E4=B8=80=E7=BA=BF=E7=A8=8B=E5=8F=
=91=E9=80=81=E4=BF=A1=E6=81=AF=EF=BC=9B=E6=9C=8D=E5=8A=A1=E7=AB=AF=E5=8F=A6=
=E6=9C=89=E4=B8=80=E7=9B=91=E5=90=AC=E7=BA=BF=E7=A8=8B=EF=BC=8C=E7=94=A8=E4=
=BA=8E=E6=8A=8A=E8=B6=85=E6=97=B6=E7=9A=84=E4=BF=A1=E6=81=AF=E5=88=A0=E9=99=
=A4=E3=80=82 <BR><BR> =20
=E8=BF=99=E9=87=8C=E5=BA=94=E7=94=A8=E5=88=B0=E4=BA=86=E5=90=8C=E6=AD=A5=EF=
=BC=8C=E4=BD=BF=E4=B8=A4=E4=B8=AA=E7=BA=BF=E7=A8=8B=E5=8F=AF=E4=BB=A5=E6=93=
=8D=E4=BD=9C=E5=90=8C=E4=B8=80=E4=B8=AAmap=E3=80=82 =
<BR><BR>=E4=BB=A3=E7=A0=81=EF=BC=9A=EF=BC=88=E7=B1=BB=E5=85=A8=E5=9C=A8=E5=
=90=8C=E4=B8=80=E4=B8=AA=E5=8C=85=E5=86=85=EF=BC=89 =
<BR>server=E7=AB=AF=EF=BC=9A <BR><BR><PRE class=3Djava name=3D"code">
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Collections;
import java.util.concurrent.TimeUnit;
import java.util.HashMap;
import java.util.Map;
public class ServerNet {
// =E4=BB=A5=E6=AF=AB=E7=A7=92=E4=B8=BA=E5=8D=95=E4=BD=8D=20
private final static long timeLimit =3D 10000 ;
private Map<String,String> map =3D =
Collections.synchronizedMap(new HashMap<String,String>());
=09
public void ServerSocketNet(){
try{
ServerSocket ss =3D new ServerSocket(6060);
Socket s =3D ss.accept();
// =
=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
BufferedReader buff =3D new BufferedReader(new =
InputStreamReader(s.getInputStream()));
// =
=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
BufferedReader in =3D new BufferedReader(new =
InputStreamReader(System.in));
// =
=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
PrintWriter pw =3D new PrintWriter(s.getOutputStream(),true); =20
=
pw.println("=E6=82=A8=E5=B7=B2=E7=BB=8F=E6=88=90=E5=8A=9F=E5=BB=BA=E7=AB=8B=
=E8=BF=9E=E6=8E=A5!");
=20
new ServerOutNet(pw, in);
new ServerTimeListener(map, timeLimit);
=20
// =
=E6=98=BE=E7=A4=BA=E5=AE=A2=E6=88=B7=E7=AB=AF=E7=9A=84=E4=BC=A0=E8=BE=93=E6=
=9D=A5=E7=9A=84=E4=BF=A1=E6=81=AF
while(true){=20
String str =3D buff.readLine();
if(str.equals("exit")){
break;
}else{
map.put(ServerHelper.getInstance().getMapKey(), str);
System.out.println(str + " map.size: " + map.size());
=20
}
System.out.println("To Client:");
Thread.sleep(100);
}
s.close();
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args){
new ServerNet().ServerSocketNet();
}
}
/**
* server=E5=8F=91=E9=80=81=E7=BA=BF=E7=A8=8B =
=E5=90=91=E5=AE=A2=E6=88=B7=E7=AB=AF=E5=8F=91=E9=80=81=E5=93=8D=E5=BA=94=E4=
=BF=A1=E6=81=AF
* @author ids-user
*
*/
class ServerOutNet extends Thread{
private PrintWriter printWriter;
private BufferedReader bufferedReader;
=09
ServerOutNet(PrintWriter pw,BufferedReader in){
this.printWriter =3D pw;
this.bufferedReader =3D in;
start();
}
=09
public void run(){
while(true){
try{
String inStr =3D bufferedReader.readLine();
if(inStr.equals("exit")){
printWriter.close();
bufferedReader.close();
break;
}else{
printWriter.println("From Server: " + inStr);
}
sleep(300);
}catch(Exception e){
printWriter =3D null;
bufferedReader =3D null;
throw new RuntimeException(e);
}
}
}
}
// =
=E6=97=B6=E9=97=B4=E7=9B=91=E5=90=AC=E7=BA=BF=E7=A8=8B=E7=B1=BB=E3=80=82
class ServerTimeListener extends Thread{
=09
private long timeLimit;
Map<String, String> map =3D new HashMap<String, String>();
// =E5=8D=95=E4=BE=8B
// private ServerTimeListener(){}
// private final static ServerTimeListener stl =3D new =
ServerTimeListener();
// public static ServerTimeListener getInstance(){
// return stl;
// }
=09
ServerTimeListener(Map<String, String> map , long timeLimit){
this.map =3D map;
this.timeLimit =3D timeLimit;
start();
}
=09
=09
public void run(){
while(true){
try{
// =E5=BE=AA=E7=8E=AFmap
long currentTime =3D System.currentTimeMillis();
for(String mapKey : map.keySet()){
long oldTime =3D Long.parseLong(mapKey.substring(0, =
mapKey.indexOf("_")));
System.out.println("currentTime - oldTime=3D" + (currentTime - =
oldTime));
if(currentTime - oldTime >=3D timeLimit){
map.remove(mapKey);
}
}
=20
TimeUnit.MILLISECONDS.sleep(timeLimit);
=09
}catch(Exception e){
throw new RuntimeException(e);
}
}
}
}
</PRE><BR><BR><BR>=E6=9C=8D=E5=8A=A1=E5=99=A8=E7=AB=AF=E8=BE=85=E5=8A=A9=E7=
=B1=BB=EF=BC=9AServerHelper <BR><PRE class=3Djava name=3D"code">
import java.util.Random;
public class ServerHelper {
=09
// =E5=8D=95=E4=BE=8B
private ServerHelper(){ }
private final static ServerHelper helper =3D new ServerHelper();
public static ServerHelper getInstance(){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -