⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java socket和多线程(thread)实例 - java ssh ajax js css - javaeye技术网站.mht

📁 1. socket通信:有客户端和服务端的socket代码。 2. 多线程:客户端和服务端各用一线程发送信息;服务端另有一监听线程
💻 MHT
📖 第 1 页 / 共 5 页
字号:
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  &nbsp;&nbsp;&nbsp; =
=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>&nbsp;&nbsp;&nbsp;=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&lt;String,String&gt; map =3D =
Collections.synchronizedMap(new HashMap&lt;String,String&gt;());
	=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&lt;String, String&gt; map =3D new HashMap&lt;String, String&gt;();

	// =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&lt;String, String&gt; 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 &gt;=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 + -