如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
多线程JavaSocket编程示例这篇做为学习孙卫琴<<Java网络编程精解>>的学习笔记吧.其中采用Java5的ExecutorService来进行线程池的方式实现多线程,模拟客户端多用户向同一服务器端发送请求.1.服务端packagesterning;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStream;importjava.io.PrintWriter;importjava.net.*;importjava.util.concurrent.*;publicclassMultiThreadServer{privateintport=8821;privateServerSocketserverSocket;privateExecutorServiceexecutorService;//线程池privatefinalintPOOL_SIZE=10;//单个CPU线程池大小publicMultiThreadServer()throwsIOException{serverSocket=newServerSocket(port);//Runtime的availableProcessor()方法返回当前系统的CPU数目.executorService=Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()*POOL_SIZE);System.out.println("服务器启动");}publicvoidservice(){while(true){Socketsocket=null;try{//接收客户连接,只要客户进行了连接,就会触发accept();从而建立连接socket=serverSocket.accept();executorService.execute(newHandler(socket));}catch(Exceptione){e.printStackTrace();}}}publicstaticvoidmain(String[]args)throwsIOException{newMultiThreadServer().service();}}classHandlerimplementsRunnable{privateSocketsocket;publicHandler(Socketsocket){this.socket=socket;}privatePrintWritergetWriter(Socketsocket)throwsIOException{OutputStreamsocketOut=socket.getOutputStream();returnnewPrintWriter(socketOut,true);}privateBufferedReadergetReader(Socketsocket)throwsIOException{InputStreamsocketIn=socket.getInputStream();returnnewBufferedReader(newInputStreamReader(socketIn));}publicStringecho(Stringmsg){return"echo:"+msg;}publicvoidrun(){try{System.out.println("Newconnectionaccepted"+socket.getInetAddress()+":"+socket.getPort());BufferedReaderbr=getReader(socket);PrintWriterpw=getWriter(socket);Stringmsg=null;while((msg=br.readLine())!=null){System.out.println(msg);pw.println(echo(msg));if(msg.equals("bye"))break;}}catch(IOExceptione){e.printStackTrace();}finally{try{if(socket!=null)socket.close();}catch(IOExceptione){e.printStackTrace();}}}}2.客户端packagesterning;importjava.io.BufferedReader;importjava.io.IOE